BreakIterator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
该 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 使用 a CharacterIterator扫描文本,因此能够扫描实现该协议的任何对象持有的文本。 A StringCharacterIterator 用于扫描 String 传递给 setText的对象。 在 CharacterIterator 传递给 setText对象后,不得修改该对象。 如果对象中的CharacterIterator文本已更改,调用方必须通过调用setText来重置BreakIterator。
使用此类提供的工厂方法创建各种类型的中断迭代器的实例。 特别是,使用getWordInstance、getLineInstance创建 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() 默认区域设置的字符分隔符的新 |
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
该 |
| JniPeerMembers |
该 |
| LineInstance |
返回 Locale#getDefault() 默认区域设置换行符的新 |
| PeerReference |
该 |
| SentenceInstance |
返回 Locale#getDefault() 默认区域设置的句子中断的新 |
| Text |
返回一个 |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| WordInstance |
返回 Locale#getDefault() 默认区域设置的断字符的新 |
方法
| 名称 | 说明 |
|---|---|
| Clone() |
创建此迭代器的副本 |
| Current() |
返回最近由 next()、next(int)、previous()、previous()、last()、last()、following(int)或 previous(int)返回的文本边界的字符索引。 |
| Dispose() |
该 |
| Dispose(Boolean) |
该 |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| First() |
返回第一个边界。 |
| Following(Int32) |
返回指定字符偏移后的第一个边界。 |
| GetAvailableLocales() |
返回此类方法可以返回本地化实例的所有区域设置 |
| GetCharacterInstance(Locale) |
返回给定区域设置的字符分隔符的新 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetLineInstance(Locale) |
返回给定区域设置换行符的新 |
| GetSentenceInstance(Locale) |
返回给定区域设置的句子中断的新 |
| GetWordInstance(Locale) |
返回给定区域设置的断字符的新 |
| 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>() |
该 |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
该 |
| 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() |
该 |
| IJavaPeerable.DisposeUnlessReferenced() |
该 |
| IJavaPeerable.Finalized() |
该 |
| IJavaPeerable.JniManagedPeerState |
该 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
该 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
该 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
该 |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
该 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |