例如,这有效:
String test = "I am a good boy";
String splitbyWord = "a good";
System.out.println(test.split(splitbyWord)[1]); => boy
但这不是:
String test = "I am a (good) boy";
String splitbyWord = "a (good)";
System.out.println(test.split(splitbyWord)[1]);
=>index out of bound
我该如何解决这个问题?
答案 0 :(得分:3)
String#split使用正则表达式。圆括号是用于表示capturing groups范围的特殊字符。他们应该逃脱:
String splitbyWord = "a \\(good\\)";
答案 1 :(得分:2)
问题是split()
采用正则表达式,括号在正则表达式中具有特殊含义。对此的一般解决方案是使用Pattern.quote()
:
System.out.println(test.split(Pattern.quote(splitbyWord))[1]);
答案 2 :(得分:0)
检查javadoc中的split方法。它使用正则表达式来分割字符串。我认为括号在正则表达式中标记一个组,所以你应该逃避它们:
String splitbyWord = "a \\(good\\)";