关于 BreakIterator 类
原文: https://docs.oracle.com/javase/tutorial/i18n/text/about.html
BreakIterator
类对语言环境敏感,因为文本边界因语言而异。例如,换行符的语法规则对于所有语言都不相同。要确定BreakIterator
类支持的语言环境,请调用getAvailableLocales
方法,如下所示:
Locale[] locales = BreakIterator.getAvailableLocales();
您可以使用BreakIterator
类分析四种边界:字符,单词,句子和潜在的换行符。实例化BreakIterator
时,可以调用相应的工厂方法:
getCharacterInstance
getWordInstance
getSentenceInstance
getLineInstance
BreakIterator
的每个实例只能检测一种类型的边界。例如,如果要同时找到字符和字边界,则可以创建两个单独的实例。
BreakIterator
有一个虚构的光标,指向一串文本中的当前边界。您可以使用previous
和next
方法在文本中移动此光标。例如,如果您使用getWordInstance
创建了BreakIterator
,则每次调用next
方法时,光标都会移动到文本中的下一个单词边界。游标移动方法返回指示边界位置的整数。此位置是文本字符串中将跟随边界的字符的索引。与字符串索引一样,边界从零开始。第一个边界为 0,最后一个边界是字符串的长度。下图显示了next
和previous
方法在一行文本中检测到的单词边界:
This figure has been reduced to fit on the page.
Click the image to view it at its natural size.
您应该仅将BreakIterator
类用于自然语言文本。要标记编程语言,请使用StreamTokenizer
类。
以下部分给出了每种边界分析的示例。编码示例来自名为 BreakIteratorDemo.java
的源代码文件。