如何把一个字符串中 大括号里的内容提取出来,并替换掉呢?坐等!!!

wm2212 2012-11-27 09:48:03
字符串:
" 您好{"hyena":"comment","content":"paul","action":"user","targetId":15,"options":{}}
评论了您的{"hyena":"comment","content":"焦作云山","action":"trip","targetId":63,"options":{}}中的
{"hyena":"comment","content":"图片","action":"picture","targetId":656,"options":{"trip":63}}"


如何将最外层大括号里的内容拿出来,并且替换掉呢?求大神帮忙啊?
...全文
5520 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
安特矮油 2012-12-10
  • 打赏
  • 举报
回复
之前写过匹配一个个的计算公式的()的代码,希望对你有点帮助

package com.study.regular;

import java.util.ArrayList;
import java.util.List;

public class PiPei {
	public static void main(String[] args) {
		String s = "(((520+480)*38/10)/2*((520+480)*38/10)/2)) ";
		List<Char> list = new ArrayList<Char>();
		do{
			s = getString(s, list);
		}while(s != null && s.indexOf("(") != -1);
		for(Char c : list){
			System.out.println(c.str.substring(c.startIndex, c.endIndex + 1));
		}
	}
	
	public static String getString(String str, List<Char> list){
		char[] cs = str.toCharArray();
		boolean isStart = false;
		Char ch = new Char();
		ch.str = str;
		for(int i = 0; i < cs.length; i++){
			char c = cs[i];
			if(c == '('){
				if(!isStart){
					ch.startIndex = i;
					isStart = true;
				}
				ch.layer++;
			}else if (c == ')' && ch.layer > 0){
				ch.layer--;
				if(ch.layer == 0){
					ch.endIndex = i;
					list.add(ch);
					if(i != cs.length - 1){
						String last = str.substring(i + 1);
						do{
							last = getString(last, list);
						}while(last != null && last.indexOf("(") != -1);
					}
					break;
				}
			}
		}
		if(ch.endIndex != 0){
			return str.substring(ch.startIndex + 1, ch.endIndex);
		}
		return null;
	}

}
class Char{
	int startIndex;
	int endIndex;
	int layer;
	String str;
}
幽饮烛 2012-12-09
  • 打赏
  • 举报
回复
怎么这东东,怎么看怎么像 JSON
司机 2012-12-09
  • 打赏
  • 举报
回复
split() repalce() 还是用正则表达式比较好。
wm2212 2012-12-09
  • 打赏
  • 举报
回复
谢谢你们啊,你们提供的思路都很好
白开水MD5 2012-11-28
  • 打赏
  • 举报
回复

public class Word {

	public static void main(String args[]){
		String str="您好{options{abc}}评论了您的{options{def}}中的{options{trip:63}}";
		ArrayList<String>  word=new ArrayList<String>();
		int m=0,n=0;
		int count=0;
		for(int i=0;i<str.length();i++){
			if(str.charAt(i)=='{'){
				if(count==0){
					m=i;
				}
				count++;
			}
			if(str.charAt(i)=='}'){
				count--;
				if(count==0){
					n=i;
					word.add(str.substring(m, n+1));
				}
			}
			
		}
		for(String a : word){
			System.out.println(a);
		}
	}
}
可以看下只提取出来了 没替换
小绵羊 2012-11-28
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
您好{"hyena":"comment","content":"paul","action":"user","targetId":15,"options":{}} 评论了您的{"hyena":"comment","content":"焦作云山","action":"trip","targetId":63,"options":{}}中的 {"hyena":"comm……
可以提取 Pattern p = Pattern.compile("\\{.*?\\}}"); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); } 如果楼主的都是这种格式的话我这个可以用用
失落夏天 2012-11-28
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
您好{"hyena":"comment","content":"paul","action":"user","targetId":15,"options":{}} 评论了您的{"hyena":"comment","content":"焦作云山","action":"trip","targetId":63,"options":{}}中的 {"hyena":"comment","content……
把(改成{,同理)改成} 看错了,看成了括号
失落夏天 2012-11-28
  • 打赏
  • 举报
回复
您好{"hyena":"comment","content":"paul","action":"user","targetId":15,"options":{}} 评论了您的{"hyena":"comment","content":"焦作云山","action":"trip","targetId":63,"options":{}}中的 {"hyena":"comment","content":"图片","action":"picture","targetId":656,"options":{"trip":63}}" 正则可以判断,但是可以提取么?这个我不清楚。 不过这题不难啊,我这网吧没有编译环境,就大体上说一下吧。 String[] s;//存放(分开的字符串 String[] ss;//存放s中由)分开的字符串 String str="e(fe)fe";//str就是这个字符字符串,这里只是举个例子 s=str.split("("); for(int i=0;i<s.length;i++){ if(s[i].contains(")")){ ss=s[i].split(")"); system.out.println("符合条件的字符串为:"+s[0]); } } 你测试下结果,如果不对回下贴,我再改改,感觉思路上没难度。
悲催的程序猿 2012-11-28
  • 打赏
  • 举报
回复
额,你这个是一个字符串?
小绵羊 2012-11-28
  • 打赏
  • 举报
回复
额,正则不就可以了么?

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧