C# 入門 & 実践 / C sharp

4-18. 文字列操作 - 4 - 正規化


・文字列が特定の正規形に正規化されているかを判定するには、IsNormalized メソッドを使用。特定の正規形に正規化された文字列を作成するには、Normalize メソッドを使用。

Unicode のコードを正規化するそうです!

とりあえず、C、D、KC、KDという正規化形式があるそうで。

同じ正規化を行っていると比較がちゃんと行くそうで
逆に違う正規化を行うとどうなんでしょう?

        static void Main()
        {
            string str = "ぱぴぷぺぽは①ヴばは゛";
            // 正規化確認
            Console.WriteLine("C: 完全標準分解を使用してUnicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。");
            // 通常は C にされているのか?
            if (str.IsNormalized(NormalizationForm.FormC) )
            {
                Console.WriteLine("C:{0}" , str);
            }
            Console.WriteLine("D: 完全標準分解を使用してUnicode 文字列を正規化したことを示します。");
            string x = str.Normalize(NormalizationForm.FormD);
            if (x.IsNormalized(NormalizationForm.FormD))
            {
                Console.WriteLine("D:{0}", x);
            }
            Console.WriteLine("KC: 完全互換分解を使用してUnicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。");
            x = str.Normalize(NormalizationForm.FormKC);
            if (x.IsNormalized(NormalizationForm.FormKC))
            {
                Console.WriteLine("KC:{0}", x);
            }
            Console.WriteLine("KD: 完全互換分解を使用してUnicode 文字列を正規化したことを示します。");
            x = str.Normalize(NormalizationForm.FormKD);
            if (x.IsNormalized(NormalizationForm.FormKD))
            {
                Console.WriteLine("KD:{0}", x);
            }
        }

C: 完全標準分解を使用してUnicode 文字列を正規化した後、可能な場合は、シーケンス
を主要な複合文字で置換することを示します。
C:ぱぴぷぺぽは①ヴばは゛

D: 完全標準分解を使用してUnicode 文字列を正規化したことを示します。
D:は?ひ?ふ?へ?ほ?は①ウ?は?は゛

KC: 完全互換分解を使用してUnicode 文字列を正規化した後、可能な場合は、シーケンス
を主要な複合文字で置換することを示します。
KC:ぱぴぷぺぽは1ヴばは ?

KD: 完全互換分解を使用してUnicode 文字列を正規化したことを示します。
KD:は?ひ?ふ?へ?ほ?は1ウ?は?は ?

とりあえずこういうことらしいです。







4-17. 文字列操作 - 3 - フォーマット, sprintf « 4. C# 入門 Level 2 » 4-19. 正規表現 / RegularExpressions - 1 - 検索 / MatchCollection


C# 入門 & 実践 / C sharp