我是Java的新手。 我想知道是否有一种更简单有效的方法来实现以下Splitting of String。我尝试过模式和匹配器,但并没有真正按照我想要的方式出现。
"{1,24,5,[8,5,9],7,[0,1]}"
分为:
1
24
5
[8,5,9]
7
[0,1]
这是一个完全错误的代码,但无论如何我都会发布它:
String str = "{1,24,5,[8,5,9],7,[0,1]}";
str= str.replaceAll("\\{", "");
str= str.replaceAll("}", "");
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
Matcher matcher = pattern.matcher(str);
String[] test = new String[10];
// String[] _test = new String[10];
int i = 0;
String[] split = str.split(",");
while (matcher.find()) {
test[i] = matcher.group(0);
String[] split1 = matcher.group(0).split(",");
// System.out.println(split1[i]);
for (int j = 0; j < split.length; j++) {
if(!split[j].equals(test[j])&&((!split[j].contains("\\["))||!split[j].contains("\\]"))){
System.out.println(split[j]);
}
}
i++;
}
}
使用给定的String格式,可以说{a,b,[c,d,e],...}格式。我想要获取所有内容,但方括号中的内容将被表示为一个元素(如数组)。
答案 0 :(得分:6)
这有效:
public static void main(String[] args)
{
customSplit("{1,24,5,[8,5,9],7,[0,1]}");
}
static void customSplit(String str){
Pattern pattern = Pattern.compile("[0-9]+|\\[.*?\\]");
Matcher matcher =
pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
产生输出
1
24
5
[8,5,9]
7
[0,1]