使用子字符串作为分隔符拆分或标记java String

时间:2018-05-04 09:41:38

标签: java string split

如何在java中拆分或标记不基于正则表达式但基于子字符串的String?

String str = "{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e]}}, B={333={i= [b,c]}}};

现在我想根据子串“}},”而不是regex“}}来标记或拆分字符串,”。

2 个答案:

答案 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]}}}]