Normalizer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
舊的 Unicode 正規化 API。
[Android.Runtime.Register("android/icu/text/Normalizer", ApiSince=24, DoNotGenerateAcw=true)]
public sealed class Normalizer : Java.Lang.Object, IDisposable, Java.Lang.ICloneable
[<Android.Runtime.Register("android/icu/text/Normalizer", ApiSince=24, DoNotGenerateAcw=true)>]
type Normalizer = class
inherit Object
interface ICloneable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 屬性
- 實作
備註
舊的 Unicode 正規化 API。
此 API 已被類別取代 Normalizer2 ,僅提供向下相容的版本。 此類別僅將權限委派給 Normalizer2 類別。 有兩個例外:新 API 未提供 和 QuickCheckResult的替代compare()。
normalize 將 Unicode 文字轉換為等效的組合或分解格式,使文字的排序與搜尋更為方便。
normalize 支援以下描述的標準正規化形式
Unicode 標準附錄 #15 及 mdash;Unicode 正規化表單。
帶有重音或其他裝飾的字元可以在 Unicode 中以多種不同方式編碼。 舉例來說,以字元A-acute為例。 在 Unicode 中,這可以編碼為單一字元(即「組合」形式):
00C1 LATIN CAPITAL LETTER A WITH ACUTE
或作為兩個獨立字元(「分解」形式):
0041 LATIN CAPITAL LETTER A
0301 COMBINING ACUTE ACCENT
然而,對程式使用者而言,這兩個序列應視為同一個「使用者層級」字元「帶有尖銳口音的A」。 當你搜尋或比較文本時,必須確保這兩個序列被同等對待。 此外,你必須處理有多種口音的角色。 有時角色組合重音的順序很重要,而在其他情況下,不同重音順序其實是相當的。
同樣地,字串「ffi」也可以編碼成三個獨立的字母:
0066 LATIN SMALL LETTER F
0066 LATIN SMALL LETTER F
0069 LATIN SMALL LETTER I
或作為單一角色
FB03 LATIN SMALL LIGATURE FFI
FFI 連字並不是獨立的語意字元,嚴格來說它根本不應該出現在 Unicode 裡,但它是為了與已有的字元集相容而加入的。 Unicode 標準透過賦予這些字元「相容性」分解成對應的語意字元來識別這些字元。 在排序和搜尋時,你通常會想使用這些映射。
normalize 透過將文本轉換為典型的組合與分解形式,如上述第一個範例所示,有助於解決這些問題。 此外,你也可以讓它執行相容性分解,讓你能將相容性字元視為對應的對應字元。 最後,將 normalize 重音重新排列成正確的標準順序,讓你不必自己擔心重音重排。
FCD 表格「快速 C 或 D」也設計用於彙整。 它允許處理那些不一定經過正規化的字串(如排序),該演算法在「典範封閉」下運作,也就是說,它對預組合字元及其分解後的等價物一視同仁。
它不是正規化形式,因為它不提供表示的唯一性。 多個字串可能在典範上等價(它們的 NFD 相同),且可能都符合 FCD,但本身並不完全相同。
該形式被定義為「原始分解」,即每個字元的遞迴典範分解,會得到一個典範排序的字串。 這表示只要分解不需要典範重新排序,預組合字元是被允許的。
它對於像彙整這類過程的優點是,所有 NFD 和大多數 NFC 文本——以及許多未正規化的文本——已經符合 FCD,且不需要進行正規化(NFD)來完成此類程序。 FCD 快速檢查在實務中大多數弦都會回應 YES。
normalize(FCD)可透過 NFD 實作。
欲了解更多 FCD 細節,請參閱 Unicode 技術說明 #5(應用中的典範等價): http://www.unicode.org/notes/tn5/#FCD
如果對整理物件開啟正規化,ICU 整合會自動執行 NFD 或 FCD 正規化。 除了校對和字串搜尋外,正規化字串還可能用於字串等價比較、音譯/轉錄、唯一表示等。
W3C 通常建議以 NFC 交換簡訊。 同時也要注意,大多數舊有字元編碼僅使用預組合的形式,且通常不會單獨編碼任何組合標記。 若要轉換成此類字元編碼,Unicode 文本需正規化為 NFC。 更多使用範例請參閱 Unicode 標準附錄。
注意:正規化器類別也提供迭代正規化的 API。 雖然 setIndex() 和 getIndex() 指的是底層 Unicode 輸入文字中的索引,而 next() 和 previous () 方法則是遍歷正規化輸出中的字元。 這表示 next() 與 previous() 回傳的字元,以及 setIndex() 和 getIndex() 傳回的索引之間不一定是一對一對應。 因此,Normalizer 並未實作 CharacterIterator 介面。
Java 文件 android.icu.text.Normalizer。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
欄位
| 名稱 | Description |
|---|---|
| CompareCodePointOrder |
已淘汰.
比較選項位元:以碼點順序而非碼單位順序比較字串。 |
| CompareIgnoreCase |
已淘汰.
比較選項位元:執行大小寫不區分的比較。 |
| FoldCaseDefault |
已淘汰.
比較選項位元:大小寫敏感地比較字串 |
| FoldCaseExcludeSpecialI |
已淘汰.
格摺疊的選項值:使用 CaseFolding 中所提供的修改過的映射集合。 |
| InputIsFcd |
已淘汰.
比較選項位元:假設兩個輸入字串都符合 FCD 條件。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| JniPeerMembers |
舊的 Unicode 正規化 API。 |
| Maybe |
舊的 Unicode 正規化 API。 |
| No |
舊的 Unicode 正規化 API。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| Yes |
舊的 Unicode 正規化 API。 |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
舊的 Unicode 正規化 API。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
舊的 Unicode 正規化 API。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
舊的 Unicode 正規化 API。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |