0

例如,这有效:

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

我该如何解决?

4

3 回答 3

3

String#split使用正则表达式。圆括号是用于表示 捕获组边界的特殊字符。他们应该被逃脱:

String splitbyWord = "a \\(good\\)";
于 2013-04-25T19:33:00.060 回答
2

问题在于它split()采用正则表达式,而括号在正则表达式中具有特殊含义。对此的一般解决方案是使用Pattern.quote()

        System.out.println(test.split(Pattern.quote(splitbyWord))[1]);
于 2013-04-25T19:34:34.513 回答
0

检查 javadoc 中的 split 方法。它使用正则表达式来拆分字符串。我认为括号在正则表达式中标记了一个组,因此您应该转义它们:

String splitbyWord = "a \\(good\\)";
于 2013-04-25T19:36:24.460 回答