java.lang.Object | +----java.text.BreakIterator
BreakIterator 类实现了查找文本边界的方法。
BreakIterator 的实例保持当前的位置并扫描文本,在遇到边界时返回边界处字符的位置索引。内在地,BreakIterator 使用
CharacterIterator 扫描文本,并因此能够扫描实现那个协议的任何对象保持的文本。
StringCharacterIterator 用于扫描传递到 setText 的 String 对象。
可使用该类提供的工厂方法来创建 break iterators 的不同类型的实例。特别地,使用 getWordIterator、getLineIterator、getSentenceIterator和 getCharacterIterator 方法来创建各自执行字、行、语句和字符的边界分析的 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));
}
public static final int DONE
protected BreakIterator()
public Object clone()
public abstract int first()
public abstract int last()
public abstract int next(int n)
public abstract int next()
public abstract int previous()
public abstract int following(int offset)
public abstract int current()
public abstract CharacterIterator getText()
public void setText(String newText)
public abstract void setText(CharacterIterator newText)
public static BreakIterator getWordInstance()
public static BreakIterator getWordInstance(Locale where)
public static BreakIterator getLineInstance()
public static BreakIterator getLineInstance(Locale where)
public static BreakIterator getCharacterInstance()
public static BreakIterator getCharacterInstance(Locale where)
public static BreakIterator getSentenceInstance()
public static BreakIterator getSentenceInstance(Locale where)
public static synchronized Locale[] getAvailableLocales()