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
實例會維持目前的位置,並掃描傳回界限發生之字元索引的文字。 在內部,使用 CharacterIterator
掃描文字, BreakIterator
因此能夠掃描實作該通訊協定的任何物件所持有的文字。 StringCharacterIterator
用來掃描 String
傳遞至 setText
的物件。 在 CharacterIterator
傳遞至 setText
之後,不得修改 物件。 如果物件中的 CharacterIterator
文字已變更,呼叫端必須呼叫 setText
來重設 BreakIterator
。
您可以使用這個類別所提供的 Factory 方法,來建立各種類型中斷反覆運算器的實例。 特別是,使用 getWordInstance
、 getLineInstance
getSentenceInstance
和 getCharacterInstance
來建立 BreakIterator
分別執行文字、行、句子和字元界限分析的 。 單一 BreakIterator
只能在單一單元上運作, (單字、行、句子等等) 。 您必須針對您想要執行的每個單位界限分析使用不同的反覆運算器。
「line」 > 線條界限分析會決定在換行時,文字字串可以中斷的位置。 機制會正確處理標點符號和連字號字。 實際換行也需要考慮可用的線條寬度,且由較高層級的軟體處理。
「句子」 > 句子界限分析允許選取數位和縮寫內的句點正確解譯,以及尾端標點符號,例如引號和括弧。
「單字」 > Word界限分析是由搜尋和取代函式所使用,以及在文字編輯應用程式中,允許使用者使用按兩下來選取單字。 Word選取專案提供內標點符號和下列單字的正確解譯。 不屬於單字一部分的字元,例如符號或標點符號,在兩邊都有斷詞符號。
例如,當使用者透過文字字串移動游標時,「字元」 > 界限分析可讓使用者與字元互動。 不論字元的儲存方式為何,字元界限分析都會提供正確的字元字串導覽。 傳回的界限可能是增補字元、結合字元序列或 Ligature 叢集的界限。 例如,強調字元可能會儲存為基底字元和聽寫標記。 使用者認為是字元的功能在語言之間可能會有所不同。
BreakIterator
這個類別的 Factory 方法所傳回的實例僅供自然語言使用,不適用於程式設計語言文字。 不過,可以定義標記程式設計語言的子類別。
<強 > 式範例/強 > 式 < :
建立和使用文字界限: < 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 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。 |
欄位
Done |
DONE 是由上一個 () 、next () 、next (int) 、int () 和下列 (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() |
傳回下一個 () 、下一個 (int) 、上一個 () 、first () 、last () 的文字界限字元索引, (遵循 int) 或先前 (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 > notified < /em > 或 < em > interrupted < /em > 來喚醒。 (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /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) |
類別 |