如何在java中拆分或标记不基于正则表达式但基于子字符串的String?
String str = "{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e]}}, B={333={i= [b,c]}}};
现在我想根据子串“}},”而不是regex“}}来标记或拆分字符串,”。
答案 0 :(得分:1)
String str = "{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e]}}, B={333={i= [b,c]}}}";
String[] split = str.trim().split("}},");
Arrays.stream(split).forEach(s-> System.out.println(s));
答案 1 :(得分:1)
尽管String.split(String regex)
函数指定它将正则表达式作为参数,但这并不能阻止您转义任何特殊字符并拆分文字字符串。
要转义正则表达式中的特殊字符,可以使用Pattern.quote(String s)
函数,也可以使用反斜杠\\
转义单个字符:
String escapedStr = Pattern.quote("}},");
String alternativeEscapedStr = "\\}\\},";
但是,对于您提供的示例,您不需要转义任何内容:
String str = "{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e]}}, B={333={i= [b,c]}}}";
String[] splitStr = str.split(Pattern.quote("}},"));
System.out.println(Arrays.toString(splitStr));
String[] splitStr2 = str.split("}},");
System.out.println(Arrays.toString(splitStr2));
输出:
[{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e], B={333={i= [b,c]}}}]
[{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e], B={333={i= [b,c]}}}]