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
使用 CharacterIterator
扫描文本,因此能够扫描实现该协议的任何对象持有的文本。 StringCharacterIterator
用于扫描String
传递给 setText
的对象。 在 CharacterIterator
传递给 setText
后,不得修改 对象。 如果对象中的CharacterIterator
文本发生更改,则调用方必须通过调用 setText
来重置 BreakIterator
。
使用此类提供的工厂方法创建各种类型的中断迭代器的实例。 具体而言,使用 getWordInstance
、 getLineInstance
、 getSentenceInstance
和 getCharacterInstance
创建 BreakIterator
分别执行单词、行、句子和字符边界分析的 。 单个 BreakIterator
只能在一个单元上工作, (单词、行、句子等) 。 必须对要执行的每个单元边界分析使用不同的迭代器。
“line”> 行边界分析确定在换行时文本字符串可以中断的位置。 该机制可正确处理标点符号和连字符单词。 实际的换行还需要考虑可用的行宽,并由更高级别的软件处理。
“句子”> 句子边界分析允许选择数字和缩写中的句点的正确解释,以及尾随标点符号(如引号和括号)。
“word”>Word边界分析由搜索和替换函数以及允许用户双击选择字词的文本编辑应用程序中使用。 Word选择可正确解释单词内和后面的标点符号。 不属于单词的字符(如符号或标点符号)的两侧都有分词。
“character”> 字符边界分析允许用户按预期方式与字符交互,例如,在文本字符串中移动光标时。 字符边界分析在字符串之间提供正确的导航,而不管字符的存储方式如何。 返回的边界可以是补充字符、组合字符序列或连字群集的边界。 例如,可能会将重音符存储为基字符和音调符号。 用户认为字符的内容可能因语言而异。
BreakIterator
此类的工厂方法返回的实例仅用于自然语言,不适用于编程语言文本。 但是,可以定义用于标记编程语言的子类。
<strong>Examples</strong>:
创建和使用文本边界: <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 象形字、朝鲜文音节、假名字符等 ) ,则此边界与下一个边界之间的文本为单词;否则,它是 words 之间的材料。) </blockquote>
在 1.1 中添加。
的 java.text.BreakIterator
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
BreakIterator() |
构造函数。 |
BreakIterator(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
字段
Done |
在到达第一个或最后一个文本边界时,上一个 () 、next () 、next (int) 、 (int) 之前和后 (int) 返回 DONE。 |
属性
CharacterInstance |
返回 Locale#getDefault () 默认区域设置的字符分隔符的新 |
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
类 |
JniPeerMembers |
类 |
LineInstance |
返回 Locale#getDefault () 默认区域设置的换行符的新 |
PeerReference |
类 |
SentenceInstance |
返回区域设置#getDefault () 默认区域设置的换行符的新 |
Text |
返回一个 , |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
WordInstance |
返回区域设置#getDefault () 默认区域设置的分词符的新 |
方法
Clone() |
创建此迭代器的副本 |
Current() |
返回最近由 next () 、next (int) 、previous () 、first () 、last () 、 (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) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
Wait(Int64, Int32) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
显式接口实现
IJavaPeerable.Disposed() |
类 |
IJavaPeerable.DisposeUnlessReferenced() |
类 |
IJavaPeerable.Finalized() |
类 |
IJavaPeerable.JniManagedPeerState |
类 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
类 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
类 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
类 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
类 |
GetJniTypeName(IJavaPeerable) |
类 |