- java.lang.Object
-
- java.text.Normalizer
-
public final class Normalizer extends Object
このクラスは、テキストのソートや検索が容易になるようにUnicodeテキストをそれと等価な合成形式または分解形式に変換する、normalize
メソッドを提供します。normalize
メソッドは、「Unicode Standard Annex#15-Unicode Normalization Forms」に記述されている標準の正規化形式をサポートしています。Unicodeでは、アクセントなどの修飾の付いた文字をいくつかの方法で符号化できます。 文字A-acuteを例にとってみましょう。 これは、Unicodeでは単一の文字(合成形式)として符号化できます。
U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
または、2つの独立した文字(分解形式)として符号化できます。U+0041 LATIN CAPITAL LETTER A U+0301 COMBINING ACUTE ACCENT
ただし、プログラムのユーザーにとっては、どちらのシーケンスも、ユーザー・レベルでは同じ文字「acuteアクセント付きのA」として扱われるべきです。 テキストの検索や比較を行うときに、これら2つのシーケンスが等価に扱われることを確認する必要があります。 また、複数のアクセントを持つ文字も処理する必要があります。 文字の結合アクセントの順序が重要になる場合もあれば、アクセントの順序が異なっても実際には等価になる場合もあります。同様に、文字列「ffi」は、3つの独立した文字として符号化できます。
U+0066 LATIN SMALL LETTER F U+0066 LATIN SMALL LETTER F U+0069 LATIN SMALL LETTER I
または、単一の文字として符号化できます。U+FB03 LATIN SMALL LIGATURE FFI
合字ffiは、区別可能な意味上の文字ではなく、厳密にはUnicodeに含まれるべきではありません。ただし、既存の文字セットですでに提供されているため、その互換性のために含まれています。 Unicode標準では、このような文字を、それに対応する意味上の文字に「互換」分解することによって識別します。 検索や比較を行うとき、これらのマッピングを使用する必要がしばしば発生するでしょう。上記の最初の例で示したように、
normalize
メソッドでテキストを正規合成形式または正規分解形式に変換すると、このような問題を解決するのに役立ちます。 また、このメソッドで互換分解を実行して、互換文字をその等価な文字と同じものとして扱うこともできます。 さらに、normalize
メソッドはアクセントを適切な正規の順序に並べ替えるので、ユーザーがアクセントの並べ替えについて心配する必要はありません。W3Cでは、NFCでテキストを交換するよう一般に推奨しています。 また、従来の文字エンコーディングのほとんどは事前合成形式だけを使用し、それ自体では連結マークの符号化を行わない場合がよくあります。 このような文字エンコーディングへの変換を行うには、UnicodeテキストをNFCに正規化する必要があります。 使用例については、「Unicode Standard Annex」を参照してください。
- 導入されたバージョン:
- 1.6
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
Normalizer.Form
この列挙は、「Unicode Standard Annex#15-Unicode Normalization Forms」に記述されている4つのUnicode正規化形式の定数と、それらにアクセスするための2つのメソッドを提供します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 static boolean
isNormalized(CharSequence src, Normalizer.Form form)
指定されたchar値のシーケンスが正規化されているかどうかを判定します。static String
normalize(CharSequence src, Normalizer.Form form)
char値のシーケンスを正規化します。
-
-
-
メソッドの詳細
-
normalize
public static String normalize(CharSequence src, Normalizer.Form form)
char値のシーケンスを正規化します。 シーケンスは、指定された正規化形式に従って正規化されます。- パラメータ:
src
- 正規化するchar値のシーケンス。form
- 次のいずれかの正規化形式。Normalizer.Form.NFC
、Normalizer.Form.NFD
、Normalizer.Form.NFKC
、Normalizer.Form.NFKD
- 戻り値:
- 正規化された文字列
- 例外:
NullPointerException
-src
またはform
がnullの場合
-
isNormalized
public static boolean isNormalized(CharSequence src, Normalizer.Form form)
指定されたchar値のシーケンスが正規化されているかどうかを判定します。- パラメータ:
src
- チェック対象のchar値のシーケンス。form
- 次のいずれかの正規化形式。Normalizer.Form.NFC
、Normalizer.Form.NFD
、Normalizer.Form.NFKC
、Normalizer.Form.NFKD
- 戻り値:
- char値のシーケンスが正規化されている場合はtrue、そうでない場合はfalse。
- 例外:
NullPointerException
-src
またはform
がnullの場合
-
-