我试图将一段文本分成带分隔符的句子(句号,分号和问号)。我可以考虑在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));
这有效,但我想知道是否有更有效的方法来做到这一点?感谢
答案 0 :(得分: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());
}