当前位置 类层次(JDK) 所有类 (JDK) 所有域和方法 (JDK)

类 java.text.BreakIterator

java.lang.Object
   |
   +----java.text.BreakIterator

public abstract class BreakIterator
extends Object
implements Cloneable, Serializable

BreakIterator 类实现了查找文本边界的方法。 BreakIterator 的实例保持当前的位置并扫描文本,在遇到边界时返回边界处字符的位置索引。内在地,BreakIterator 使用 CharacterIterator 扫描文本,并因此能够扫描实现那个协议的任何对象保持的文本。 StringCharacterIterator 用于扫描传递到 setTextString 对象。

可使用该类提供的工厂方法来创建 break iterators 的不同类型的实例。特别地,使用 getWordIteratorgetLineIteratorgetSentenceIteratorgetCharacterIterator 方法来创建各自执行字、行、语句和字符的边界分析的 BreakIterator。一个单独的 BreakIterator 仅可对一个单元(字、行、语句等)工作。对您想执行的每个单元边界分析,必须使用不同的迭代器。

行边界分析决定当自动换行时文本字符串在哪儿断开。该机制正确地处理了标点符号和加连字符。

语句边界分析允许用在数字、缩写和结尾标点符号(如引号和括号)之内的区段的正确解释进行选择。

字边界分析由查找和替换函数使用,也用在文本编辑的应用里,它允许用户双击来选择某个字。字选择提供了对字内的和字之后标点的正确解释。不是字的一部分的字符,如符号或标点,在两边有字断开标志。

字符边界分析允许用户与他们想要的字符交互,例如在文本字符串中移动光标。字符边界分析提供了在字符所在字符串中的正确浏览,而不管字符如何存储。例如,重音字符可被存储为一个基字符和一个区别音符的标记。用户认为字符的概念会随语言的不同而不同。

BreakIterator 仅适用于自然语言。不要使用该类去标记编程语言。

例子

创建和使用文本边界

         public static void main(String args[] ) {
      if (args.length == 1) {
          String stringToExamine = args[0];
          //print each word in order
          BreakIterator boundary = BreakIterator.getWordInstance();
          boundary.setText(stringToExamine);
          printEachForward(boundary, stringToExamine);
          //print each sentence in reverse order
          boundary = BreakIterator.getSentenceInstance(Locale.US);
          boundary.setText(stringToExamine);
          printEachBackward(boundary, stringToExamine);
          printFirst(boundary, stringToExamine);
          printLast(boundary, stringToExamine);
      }
 }
 
按顺序打印每个元素
 public static void printEachForward(BreakIterator boundary, String source) {
     int start = boundary.first();
     for (int end = boundary.next();
          end != BreakIterator.DONE;
          start = end, end = boundary.next()) {
          System.out.println(source.substring(start,end));
     }
 }
 
逆序打印每个元素
 public static void printEachBackward(BreakIterator boundary, String source) {
     int end = boundary.last();
     for (int start = boundary.previous();
          start != BreakIterator.DONE;
          end = start, start = boundary.previous()) {
         System.out.println(source.substring(start,end));
     }
 }
 
打印第一个元素
 public static void printFirst(BreakIterator boundary, String source) {
     int start = boundary.first();
     int end = boundary.next();
     System.out.println(source.substring(start,end));
 }
 
打印最后一个元素
 public static void printLast(BreakIterator boundary, String source) {
     int end = boundary.last();
     int start = boundary.previous();
     System.out.println(source.substring(start,end));
 }
 
打印指定位置上的元素
 public static void printAt(BreakIterator boundary, int pos, String source) {
     int end = boundary.following(pos);
     int start = boundary.previous();
     System.out.println(source.substring(start,end));
 }
 

参见:
CharacterIterator

变量索引

DONE
在所有的边界被返回后,DONE 由 previous() 和 next() 方法返回。

构造子索引

BreakIterator()
构造子。

方法索引

clone()
创建该 iterator 的一个拷贝
current()
返回文本边界的字符索引,它最可能使由 next()、previous()、 first() 或 last() 方法返回
first()
返回第一个边界。
following(int)
返回指定偏移量后的第一个边界。
getAvailableLocales()
获得安装 BreakIterators 的语言环境集合。
getCharacterInstance()
使用缺省的语言环境为字符断开创建 BreakIterator 。返回实现字符断开的 BreakIterator 实例。
getCharacterInstance(Locale)
使用指定的语言环境为字符断开创建 BreakIterator 。返回实现字符断开的 BreakIterator 实例。
getLineInstance()
使用缺省的语言环境为行断开创建 BreakIterator 。
getLineInstance(Locale)
使用指定的语言环境为行断开创建 BreakIterator 。
getSentenceInstance()
使用缺省的语言环境为语句断开创建 BreakIterator 。返回实现语句断开的 BreakIterator 实例。
getSentenceInstance(Locale)
使用指定的语言环境为语句断开创建 BreakIterator 。返回实现语句断开的 BreakIterator 实例。
getText()
返回下一个要扫描的文本
getWordInstance()
使用缺省的语言环境为字断开创建 BreakIterator 。
getWordInstance(Locale)
使用指定的语言环境为字断开创建 BreakIterator 。
last()
返回最后的边界。
next()
返回当前边界之后的边界。
next(int)
返回从当前边界数起的第 n 个边界
previous()
返回当前边界之前的边界。
setText(CharacterIterator)
设置一个新的要扫描文本。
setText(String)
设置一个新的要扫描的文本字符串。

变量

DONE
 public static final int DONE
在所有有效的边界被返回后,DONE 由 previous() 和 next() 方法返回。


构造子

BreakIterator
 protected BreakIterator()
构造子。 BreakIterator 是无状态的和无缺省行为的构造子。


方法

clone
 public Object clone()
创建该 iterator 的一个拷贝

返回值:
创建该边界的一个拷贝
覆盖:
Object 中的 clone
first
 public abstract int first()
返回第一个边界。 代器的当前位置设置在第一个边界上。

返回值:
第一个文本边界的字符索引。
last
 public abstract int last()
返回最后的边界。迭代器的当前位置设置在最后一个边界上。

返回值:
最后一个文本边界的字符索引。
next
 public abstract int next(int n)
返回从当前边界数起的第 n 个边界

参数:
n - 返回的边界号。值 0 表示不返回。负值表示移到前面的边界,正值表示移到后面的边界。
返回值:
从当前位置数起的第 n 个边界的位置索引
next
 public abstract int next()
返回当前边界之后的边界。

返回值:
下一个文本边界的字符索引,或如果所有边界已返回则返回 DONE 。等价于 next(1)。
previous
 public abstract int previous()
返回当前边界之前的边界。

返回值:
前一个文本边界的字符索引,或如果所有边界已返回则返回 DONE 。
following
 public abstract int following(int offset)
返回指定偏移量后的第一个边界。 返回值总是大于偏移量或是值 BreakIterator.DONE

参数:
offset - 开是扫描处的偏移量。有效值由传递到 setText() 的 CharacterIterator 决定。无效值导致抛出 IllegalArgumentException 。
返回值:
指定偏移量后的第一个边界。
current
 public abstract int current()
返回由 next()、previous()、first() 或 last() 方法最近返回的文本边界的字符索引。

返回值:
最近返回的边界。
getText
 public abstract CharacterIterator getText()
返回下一个正扫描的文本

返回值:
正扫描的文本
setText
 public void setText(String newText)
设置一个新的要扫描的文本字符串。当前的扫描位置复位到 first()。

参数:
newText - 要扫描的新文本。
setText
 public abstract void setText(CharacterIterator newText)
设置一个新的要扫描的文本。当前的扫描位置复位到 first()。

参数:
newText - 要扫描的新文本。
getWordInstance
 public static BreakIterator getWordInstance()
使用缺省的语言环境为字断开创建 BreakIterator 。 返回实现字断开的 BreakIterator 实例。 WordBreak 对字选择有用(例如,双击)

返回值:
字断开的 BreakIterator
参见:
getDefault
getWordInstance
 public static BreakIterator getWordInstance(Locale where)
使用指定的语言环境为字断开创建 BreakIterator 。 返回实现字断开的 BreakIterator 实例。 WordBreak 对字选择有用(例如,双击)

参数:
where - 语言环境。如果特定的 WordBreak 对指定的语言环境不可用,则返回缺省的 WordBreak 。
返回值:
用于字断开的 BreakIterator
getLineInstance
 public static BreakIterator getLineInstance()
使用缺省的语言环境为行断开创建 BreakIterator 。 返回实现行断开的 BreakIterator 实例。 行断开是逻辑上可行的行断开,实际的行断开通常由显示宽度决定。 LineBreak 对字的自动换行文本有用。

返回值:
用于行断开的 BreakIterator
参见:
getDefault
getLineInstance
 public static BreakIterator getLineInstance(Locale where)
使用指定的语言环境为行断开创建 BreakIterator 。 返回实现行断开的 BreakIterator 实例。行断开是逻辑上可行的行断开,实际的行断开通常由显示宽度决定。 LineBreak 对字的自动换行文本有用。

参数:
where - 语言环境。如果特定的 LineBreak 对指定的语言环境不可用,则返回缺省的 LineBreak 。
返回值:
用于行断开的 BreakIterator
getCharacterInstance
 public static BreakIterator getCharacterInstance()
使用缺省的语言环境为字符断开创建 BreakIterator 。返回实现字符断开的 BreakIterator 实例。 字符断开点是组合字符序列的边界。

返回值:
用于字符断开的 BreakIterator
参见:
getDefault
getCharacterInstance
 public static BreakIterator getCharacterInstance(Locale where)
使用指定的语言环境为字符断开创建 BreakIterator 。返回实现字符断开的 BreakIterator 实例。 字符断开点是组合字符序列的边界。

参数:
where - 语言环境。如果特定的字符断开对指定的语言环境不可用,则返回缺省的字符断开 。
返回值:
用于字符断开的 BreakIterator
getSentenceInstance
 public static BreakIterator getSentenceInstance()
使用缺省的语言环境为语句断开创建 BreakIterator 。返回实现语句断开的 BreakIterator 实例。

返回值:
用于句断开的 BreakIterator
参见:
getDefault
getSentenceInstance
 public static BreakIterator getSentenceInstance(Locale where)
使用指定的语言环境为语句断开创建 BreakIterator 。返回实现语句断开的 BreakIterator 实例。

参数:
where - 语言环境。如果特定的 SentenceBreak 对指定的语言环境不可用,则返回缺省的 SentenceBreak 。
返回值:
用于语句断开的 BreakIterator
getAvailableLocales
 public static synchronized Locale[] getAvailableLocales()
获得安装 BreakIterators 的语言环境集合。

返回值:
可用的语言环境

当前位置 类层次(JDK) 所有类 (JDK) 所有域和方法 (JDK)