語言

Normalizer 類別

定義

舊的 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
繼承
Normalizer
屬性
實作

備註

舊的 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

回傳此 Object的執行時類別。

(繼承來源 Object)
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
Clone()

複製這個 Normalizer 物件。

Compare(Char[], Char[], NormalizerCompareOptions)

比較兩串字串以獲得典範等價。

Compare(Char[], Int32, Int32, Char[], Int32, Int32, NormalizerCompareOptions)

比較兩串字串以獲得典範等價。

Compare(Int32, Int32, NormalizerCompareOptions)

方便的方法,可以更快實現,因為不需要分配緩衝區。

Compare(Int32, String, NormalizerCompareOptions)

方便的方法,可以更快實現,因為不需要分配緩衝區。

Compare(String, String, NormalizerCompareOptions)

比較兩串字串以獲得典範等價。

Construct(JniObjectReference, JniObjectReferenceOptions)

舊的 Unicode 正規化 API。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

舊的 Unicode 正規化 API。

(繼承來源 JavaObject)
Equals(Object)

舊的 Unicode 正規化 API。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

舊的 Unicode 正規化 API。

(繼承來源 JavaObject)
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()

舊的 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)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

舊的 Unicode 正規化 API。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於