8.04.2011

StringComparison.Ordinalについて

StringComparison.Ordinalでカナがどういう順番に並ぶのか必要になったので少し調べてみました。
using System;
using System.Collections.Generic;

namespace Ordinal
{
    class Program
    {
        static void Main(string[] args)
        {
            //3.0以降はコレクション初期化が楽で良いですね
            var targets = new List<String>
            {
               "ア", "ァ", "イ", "ィ", "ウ", "ゥ", "エ", "ェ", "オ", "ォ",
               "カ", "ガ", "キ", "ギ", "ク", "グ", "ケ", "ゲ", "コ", "ゴ",
               "サ", "ザ", "シ", "ジ", "ス", "ズ", "セ", "ゼ", "ソ", "ゾ",
               "タ", "ダ", "チ", "ヂ", "ツ", "ッ", "ヅ", "テ", "デ", "ト", "ド",
               "ナ", "ニ", "ヌ", "ネ", "ノ",
               "ハ", "バ", "パ", "ヒ", "ビ", "ピ", "フ", "ブ", "プ", "ヘ", "ベ", "ペ", "ホ", "ボ", "ポ",
               "マ", "ミ", "ム", "メ", "モ",
               "ヤ", "ャ",  "ユ", "ュ", "ヨ","ョ",
               "ラ", "リ", "ル", "レ", "ロ",
               "ヮ", "ワ", "ヰ", "ヱ", "ヲ", "ン",
               "ヴ", "ヵ", "ヶ", "ー"
            };
            //ソート
            targets.Sort((String rhs, String lhs) => String.Compare(rhs, lhs, StringComparison.Ordinal) );
            foreach (var str in targets)
            {
                System.Diagnostics.Debug.Write(str);
            }
        }
    }
}

これの実行結果が
ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶー
となりました。
てっきり、清音・撥音・濁音・半濁音の順なのかと思っていたのですが、撥音・清音・濁音・半濁音の順なのですね。unicode順だから当然と言えば当然ですが

それと今回ソースコードを貼るに当たって 自分用メモブログ:blogger でソースコードを綺麗に表示する方法を参考にさせていただきました。
これで<pre class="brush:csharp"> </pre>
で囲めばc#ハイライトが適用されるわけです。

0 件のコメント:

コメントを投稿