将文本拆分为句子,将句子拆分为单词:BreakIterator与正则表达式

Rom*_*man 6 java regex string comparison tokenize

我不小心回答了一个问题,原始问题涉及将句子分成单独的单词.

作者建议使用BreakIterator标记输入字符串,有些人喜欢这个想法.

我只是没有那么疯狂:25行复杂代码如何比带有regexp的简单单行程更好?

请解释一下使用BreakIterator的优点以及应该使用它的真实案例.

如果它真的很酷,那么我想知道:你真的BreakIterator在你的项目中使用这种方法吗?

jon*_*tar 2

BreakIterator提供了一些很好的显式控制,并以嵌套的方式干净地迭代每个句子和单词。我不熟悉指定区域设置对您的确切作用,但我确信它有时也很有帮助。

我一点也不觉得复杂。只需为句子级别设置一个迭代器,为单词级别设置另一个迭代器,将单词第一个嵌套在第二个单词内。

如果问题发生了变化,那么您在其他问题上的解决方案可能就消失了。然而,这种迭代句子和单词的模式可以起到很多作用。

  1. 找出某个单词出现次数最多的句子。将其与该单词一起输出
  2. 找出整个字符串中使用次数最多的单词。
  3. 查找每个句子中出现的所有单词
  4. 查找在 2 个或更多句子中出现素数次数的所有单词

这样的名单还在继续……

  • *“我不太清楚指定区域设置对您有何作用...”* 边界规则因语言而异,因此也因区域设置而异;例如,javadoc 说“用户认为是一个字符”是特定于语言的。 (2认同)