[英]Split or tokenise a java String using a substring as delimiter
How to split or tokenise a String in java not based on regex but based on a substring? 如何在Java中不基于正则表达式而是基于子字符串拆分或标记字符串?
String str = "{A={111={i=[a,b,c],ii=[e,f]}, 222={iii=[a,e]}}, B={333={i= [b,c]}}};
Now I want to tokenise or split the string based on substring "}}," and not regex "}},". 现在,我想基于子字符串“}}”而不是正则表达式“}}”对字符串进行标记化或拆分。
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));
Although the String.split(String regex)
function specifies that it takes a regular expression as a parameter, that does not stop you from escaping any special characters and splitting on a literal string. 尽管String.split(String regex)
函数指定它使用正则表达式作为参数,但这不会阻止您转义任何特殊字符并拆分文字字符串。
To escape special characters in a regular expression, you can make use of the Pattern.quote(String s)
function, or you can escape the individual characters using backslashes \\\\
: 要在正则表达式中转义特殊字符,可以使用Pattern.quote(String s)
函数,也可以使用反斜杠\\\\
来转义各个字符:
String escapedStr = Pattern.quote("}},");
String alternativeEscapedStr = "\\}\\},";
For the example you have provided however, you shouldn't need to escape anything: 对于您提供的示例,您不需要转义任何内容:
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));
Output: 输出:
[{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]}}}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.