BreakIterator 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
該 BreakIterator 類別實作尋找文本邊界位置的方法。
[Android.Runtime.Register("java/text/BreakIterator", DoNotGenerateAcw=true)]
public abstract class BreakIterator : Java.Lang.Object, IDisposable, 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,因此能掃描任何實作該協定物件所持有的文字。 A StringCharacterIterator 用於掃描 String 傳送至 setText的物件。
CharacterIterator該物件在傳遞至setText後不得再修改。 若物件中的CharacterIterator文字被更改,呼叫者必須透過呼叫BreakIterator來重置setText。
你可以使用本類別提供的工廠方法來建立各種類型的破壞迭代器實例。 特別地,使用getWordInstancegetLineInstance、、 getSentenceInstance和 getCharacterInstance 來建立BreakIterator分別執行單字、行、句子和字元邊界分析的 s。 單字 BreakIterator 只能用在一個單元(單字、行、句子等等)。 你必須為每個想要進行的單元邊界分析使用不同的迭代器。
「行」> 行邊界分析決定在換行時文字字串可被切斷的位置。 該機制能正確處理標點符號和連字號詞彙。 實際的換行還需考慮可用的行寬,並由較高層級的軟體處理。
「句子」> 句子邊界分析允許選擇,並正確解釋數字與縮寫中的句點,並使用引號和括號等尾隨標點符號。
「word」> Word 邊界分析被用於搜尋與替換功能,也可用於允許使用者雙擊選取單字的文字編輯應用程式中。 Word 選擇能正確解釋詞內外的標點符號。 非單字的字元,如符號或標點符號,兩側都有分隔。
「字元」> 字元邊界分析允許使用者以預期方式與字元互動,例如在移動游標通過文字字串時。 字元邊界分析能提供字串的正確導航,無論字元如何儲存。 回傳的邊界可能是補充字元、結合字元序列或連字群的邊界。 例如,帶有重音符號的字元可能會作為基礎字元和變音符號儲存。 使用者對字元的定義在不同語言間可能有所不同。
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>
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>
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>
public static void printFirst(BreakIterator boundary, String source) {
int start = boundary.first();
int end = boundary.next();
System.out.println(source.substring(start,end));
}
</區塊引用>
列印最後一個元素: <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>
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>
{@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() 回傳的迭代器獨特之處在於它回傳的中斷位置並不同時代表被迭代物件的起點與結束點。 也就是說,句子斷行迭代器回傳的斷點,分別代表一個句子的結尾和下一個句子的開頭。 使用詞分隔迭代器時,兩個邊界之間的字元可能是單字,也可能是兩個字之間的標點符號或空白。 上述代碼使用簡單的啟發式方法來判斷哪個邊界是單字的開頭:如果該邊界與下一個邊界之間的字元至少包含一個字母(該字可以是字母、中日韓漢字、韓文音節、假名等),那麼該邊界與下一個邊界之間的文字即為單字;否則,就是字詞之間的素材。) </區塊引用>
在 1.1 版本中加入。
的 java.text.BreakIteratorJava 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
| 名稱 | Description |
|---|---|
| BreakIterator() |
構造 函數。 |
| BreakIterator(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| Done |
當到達第一個或最後一個文字邊界時,DONE 會由 precious()、next()、next(int)、preceding(int) 和 follow(int)回傳。 |
屬性
| 名稱 | Description |
|---|---|
| CharacterInstance |
會回傳一個新的 |
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
該 |
| JniPeerMembers |
該 |
| LineInstance |
會回傳一個新的 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| SentenceInstance |
回傳 |
| Text |
回傳 a |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| WordInstance |
回傳一個新的 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立這個迭代器的副本 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
該 |
| Current() |
回傳最近回傳的文字邊界字元索引,分別由 next()、next(int)、previous()、first()、last()、following(int) 或 preceding(int) 回傳。 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
該 |
| Equals(Object) |
該 |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| First() |
回傳第一個界線。 |
| Following(Int32) |
回傳在指定字元偏移量後的第一個邊界。 |
| GetAvailableLocales() |
回傳一個包含所有區域的陣列,該 |
| GetCharacterInstance(Locale) |
會回傳 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetLineInstance(Locale) |
會回傳給定地點的換 |
| GetSentenceInstance(Locale) |
回傳給 |
| GetWordInstance(Locale) |
會回傳給定地點的單 |
| IsBoundary(Int32) |
若指定的字元偏移量為文字邊界,則回傳為真。 |
| JavaFinalize() |
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Last() |
回傳最後一個邊界。 |
| Next() |
回傳緊接當前邊界的邊界。 |
| Next(Int32) |
回傳從當前邊界的第 n 個邊界。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Preceding(Int32) |
回傳指定字元偏移前的最後邊界。 |
| Previous() |
回傳當前邊界之前的邊界。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
該 |
| SetText(String) |
設定一個新的文字字串來掃描。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
該 |
| IJavaPeerable.Finalized() |
該 |
| IJavaPeerable.JniObjectReferenceControlBlock |
該 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
該 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
該 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
該 |
| IJavaPeerable.UnregisterFromRuntime() |
該 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
該 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |