# 关于 BreakIterator 类

> 原文： [https://docs.oracle.com/javase/tutorial/i18n/text/about.html](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`方法在一行文本中检测到的单词边界：

<center>[![The text 'Hope is the thing with feathers', with the boundaries indicated.](img/91bfcce1f285d04f123833e2b7593d19.jpg)](https://docs.oracle.com/javase/tutorial/figures/i18n/i18n-4.gif)
_This figure has been reduced to fit on the page.
Click the image to view it at its natural size._</center>

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

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