java - 将一段话拆分成句子,分隔符 : period, 分号和问号

标签 java split sentence

我正在尝试将一段文本拆分为带有分隔符(句号、分号和问号)的句子。我可以想到在 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));

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

最佳答案

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

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());
 }

关于java - 将一段话拆分成句子,分隔符 : period, 分号和问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950876/

相关文章:

java - 如何模拟objectOutputStream.writeObject()?

java - JPA 删除带有 IdClass 问题的查询

java - 将句子存储在数据库中

c# - 在 C# 中手动拆分字符串

随机打乱句子中单词中的字母

c++ - 我的句子回文代码(C++)有什么问题?

Java - 用具体类型覆盖对象类型参数

java - Gradle 插件任务反射扫描插件的项目类文件而不是当前项目文件

C#:拆分字符串并将结果分配给多个字符串变量

php - 带有逗号和 -(连字符)的多个 explode 字符