如何在java中逐句拆分句子(带括号)?

时间:2013-04-25 19:31:50

标签: java parsing split

例如,这有效:

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

我该如何解决这个问题?

3 个答案:

答案 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\\)";