我有一个string
之类的
String test = "Happy{{Sad}Blue{{Red}Green}}Purple";
如何提取括号之间的文本,如下所示
{Sad}Blue{{Red}Green}
Sad
{Red}Green
Red
答案 0 :(得分:2)
我不应该,但是检查一下:
Matcher m = Pattern.compile(test.replace("{", "\\{(").replace("}", ")\\}")).matcher(test);
m.find();
for (int i = 1; i <= m.groupCount(); i++) {
System.out.println(m.group(i));
}
答案 1 :(得分:0)
使用递归调用或堆栈数据结构来解决问题很容易。您可以了解背后的原因。这是一个示例:
public static void main(String[] args) {
String test = "Happy{{Sad}Blue{{Red}Green}}Purple";
findStr(test);
}
public static void findStr(String str){
if(str==null || str.equals("")){
return ;
}
int begin =0;
int end = 0;
String theStr = "";
for(int i =0;i<str.length();i++){
if(str.charAt(i) == '{'){
begin ++ ;
if(begin > 1){
theStr += str.charAt(i);
}
} else if (str.charAt(i) == '}'){
end ++ ;
if(begin == end ){
System.out.println(theStr);
findStr(theStr);
begin = 0;
end = 0;
theStr = "";
}else{
theStr += str.charAt(i);
}
}else if(begin > 0 ){
theStr += str.charAt(i);
}
}
}