关于 BreakIterator 类

原文: https://docs.oracle.com/javase/tutorial/i18n/text/about.html

BreakIterator类对语言环境敏感,因为文本边界因语言而异。例如,换行符的语法规则对于所有语言都不相同。要确定BreakIterator类支持的语言环境,请调用getAvailableLocales方法,如下所示:

  1. Locale[] locales = BreakIterator.getAvailableLocales();

您可以使用BreakIterator类分析四种边界:字符,单词,句子和潜在的换行符。实例化BreakIterator时,可以调用相应的工厂方法:

  • getCharacterInstance
  • getWordInstance
  • getSentenceInstance
  • getLineInstance

BreakIterator的每个实例只能检测一种类型的边界。例如,如果要同时找到字符和字边界,则可以创建两个单独的实例。

BreakIterator有一个虚构的光标,指向一串文本中的当前边界。您可以使用previousnext方法在文本中移动此光标。例如,如果您使用getWordInstance创建了BreakIterator,则每次调用next方法时,光标都会移动到文本中的下一个单词边界。游标移动方法返回指示边界位置的整数。此位置是文本字符串中将跟随边界的字符的索引。与字符串索引一样,边界从零开始。第一个边界为 0,最后一个边界是字符串的长度。下图显示了nextprevious方法在一行文本中检测到的单词边界:

The text 'Hope is the thing with feathers', with the boundaries indicated. This figure has been reduced to fit on the page. Click the image to view it at its natural size.

您应该仅将BreakIterator类用于自然语言文本。要标记编程语言,请使用StreamTokenizer类。

以下部分给出了每种边界分析的示例。编码示例来自名为 BreakIteratorDemo.java 的源代码文件。