1

我正在尝试将一段文本分成带有分隔符(句号、分号和问号)的句子。我可以考虑在 java 中使用 split() 方法并将结果数组保存到 ArrayList 中:

String[] sentencesByPeriod = passage.split("\\.");
String[] sentencesBySemicolon = passage.split("\\;");
String[] sentencesByQuestionM = passage.split("\\?");

List<String> allSentences = new ArrayList<String>();
allSentences.addAll(Arrays.asList(sentencesByPeriod));
allSentences.addAll(Arrays.asList(sentencesBySemicolon));
allSentences.addAll(Arrays.asList(sentencesByQuestionM));

这行得通,但我想知道是否有更有效的方法来做到这一点?谢谢

4

1 回答 1

3

在一个正则表达式中,您可以这样做。

String s[] = passage.split("[.;?]");
List<String> allSentences = new ArrayList<String>();
allSenteces.addAll(Arrays.asList(s));

或使用 StringTokenizer

 StringTokenizer tokenizer = new StringTokenizer(passage, ".;?");
 List<String> s = new ArrayList<String>();
 while(tokenizer.hasMoreTokens()){
  s.add(tokenizer.nextToken());
 }
于 2014-09-20T17:18:03.537 回答