BreakIterator 类

定义

BreakIterator 类实现用于查找文本中边界位置的方法。

[Android.Runtime.Register("java/text/BreakIterator", DoNotGenerateAcw=true)]
public abstract class BreakIterator : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/text/BreakIterator", DoNotGenerateAcw=true)>]
type BreakIterator = class
    inherit Object
    interface ICloneable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
BreakIterator
属性
实现

注解

BreakIterator 类实现用于查找文本中边界位置的方法。 维护当前位置的 BreakIterator 实例,并扫描文本,返回出现边界的字符索引。 在内部, BreakIterator 使用 a CharacterIterator扫描文本,因此能够扫描实现该协议的任何对象持有的文本。 A StringCharacterIterator 用于扫描 String 传递给 setText的对象。 在 CharacterIterator 传递给 setText对象后,不得修改该对象。 如果对象中的CharacterIterator文本已更改,调用方必须通过调用setText来重置BreakIterator

使用此类提供的工厂方法创建各种类型的中断迭代器的实例。 特别是,使用getWordInstancegetLineInstance创建 getSentenceInstancegetCharacterInstanceBreakIterator用于分别执行单词、行、句子和字符边界分析的 s。 一个 BreakIterator 单位只能处理一个单位(单词、行、句子等)。 必须对要执行的每个单元边界分析使用不同的迭代器。

“line”> 行边界分析确定行换行时文本字符串可以断开的位置。 该机制正确处理标点符号和连字符单词。 实际换行还需要考虑可用的行宽,并由更高级别的软件处理。

“句子”> 句子边界分析允许选择数字和缩写内的句点的正确解释,以及尾随标点符号(如引号和括号)。

“word”>Word边界分析用于搜索和替换函数,以及在文本编辑应用程序中,允许用户通过双击来选择字词。 Word选择提供对单词内和以下字词的标点符号的正确解释。 不属于单词的字符(如符号或标点符号)在两侧都有分词。

“character”> 字符边界分析允许用户像预期的那样与字符进行交互,例如,在移动光标穿过文本字符串时。 字符边界分析提供正确的字符字符串导航,而不考虑字符的存储方式。 返回的边界可以是补充字符、组合字符序列或连字分类。 例如,重音字符可能存储为基字符和音调标记。 用户认为字符在语言之间可能有所不同。

BreakIterator此类的工厂方法返回的实例仅用于自然语言,而不适用于编程语言文本。 但是,可以定义用于标记编程语言的子类。

<强>示例</强>:

创建和使用文本边界: <blockquote>

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);
                 }
            }

</blockquote>

按顺序打印每个元素: <blockquote>

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));
                }
            }

</blockquote>

按相反顺序打印每个元素: <blockquote>

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));
                }
            }

</blockquote>

打印第一个元素: <blockquote>

public static void printFirst(BreakIterator boundary, String source) {
                int start = boundary.first();
                int end = boundary.next();
                System.out.println(source.substring(start,end));
            }

</blockquote>

打印最后一个元素: <blockquote>

public static void printLast(BreakIterator boundary, String source) {
                int end = boundary.last();
                int start = boundary.previous();
                System.out.println(source.substring(start,end));
            }

</blockquote>

在指定位置打印元素: <blockquote>

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));
            }

</blockquote>

查找下一个单词: <blockquote>

{@code
            public static int nextWordStartAfter(int pos, String text) {
                BreakIterator wb = BreakIterator.getWordInstance();
                wb.setText(text);
                int last = wb.following(pos);
                int current = wb.next();
                while (current != BreakIterator.DONE) {
                    for (int p = last; p < current; p++) {
                        if (Character.isLetter(text.codePointAt(p)))
                            return last;
                    }
                    last = current;
                    current = wb.next();
                }
                return BreakIterator.DONE;
            }
            }

(BreakIterator.getWordInstance() 返回的迭代器是唯一的,因为它返回的中断位置不表示被迭代的东西的开始和结束。 也就是说,一个分句迭代器返回的分隔符,每个分隔符表示一个句子的末尾和下一个句子的开头。 使用断字符迭代器时,两个边界之间的字符可能是一个单词,或者它们可能是两个单词之间的标点符号或空格。 上面的代码使用简单的启发式来确定哪个边界是单词的开头:如果此边界和下一个边界之间的字符至少包括一个字母(可以是字母字母、CJK 象形字、朝鲜文音节、假名字符等),则此边界和下一个边界之间的文本是一个单词:否则,它是单词之间的材料。 </blockquote>

在 1.1 中添加。

Java文档java.text.BreakIterator

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

名称 说明
BreakIterator()

构造 函数。

BreakIterator(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

字段

名称 说明
Done

达到第一个或最后一个文本边界时,DONE 由上一个()、next(int)、previous(int)和 following(int)返回。

属性

名称 说明
CharacterInstance

返回 Locale#getDefault() 默认区域设置的字符分隔符的新 BreakIterator 实例。

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
JniPeerMembers

BreakIterator 类实现用于查找文本中边界位置的方法。

LineInstance

返回 Locale#getDefault() 默认区域设置换行符的新 BreakIterator 实例。

PeerReference

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
SentenceInstance

返回 Locale#getDefault() 默认区域设置的句子中断的新 BreakIterator 实例。

Text

返回一个 CharacterIterator 表示要分析的文本。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

WordInstance

返回 Locale#getDefault() 默认区域设置的断字符的新 BreakIterator 实例。

方法

名称 说明
Clone()

创建此迭代器的副本

Current()

返回最近由 next()、next(int)、previous()、previous()、last()、last()、following(int)或 previous(int)返回的文本边界的字符索引。

Dispose()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
Dispose(Boolean)

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
First()

返回第一个边界。

Following(Int32)

返回指定字符偏移后的第一个边界。

GetAvailableLocales()

返回此类方法可以返回本地化实例的所有区域设置 get*Instance 的数组。

GetCharacterInstance(Locale)

返回给定区域设置的字符分隔符的新 BreakIterator 实例。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetLineInstance(Locale)

返回给定区域设置换行符的新 BreakIterator 实例。

GetSentenceInstance(Locale)

返回给定区域设置的句子中断的新 BreakIterator 实例。

GetWordInstance(Locale)

返回给定区域设置的断字符的新 BreakIterator 实例。

IsBoundary(Int32)

如果指定的字符偏移量为文本边界,则返回 true。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Last()

返回最后一个边界。

Next()

返回当前边界后面的边界。

Next(Int32)

从当前边界返回第 n 个边界。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Preceding(Int32)

返回指定字符偏移量前面的最后一个边界。

Previous()

返回当前边界前面的边界。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetText(String)

设置要扫描的新文本字符串。

ToArray<T>()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.Finalized()

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

BreakIterator 类实现用于查找文本中边界位置的方法。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

BreakIterator 类实现用于查找文本中边界位置的方法。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于