ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

C# – 文字列を比較する(3)– System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare クラスの System.Globalization.CompareOptions の IgnoreWidth オプションでカタカナの全角と半角を同じに評価する。

leave a comment »

文字列を比較するとき、System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare クラスを使うと日本語固有の評価を変えることができる。たとえば System.Globalization.CompareOptions の IgnoreWidth オプションを使うと、カタカナの全角と半角を同じに評価することができる。

まず、IgnoreWidth オプションを使わない評価をする。System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare クラスが返す値は int 型で、文字列が同じときは「0」、異なるときは「-1」を返す。次の例では「違う」という評価がされる。

——————————————————————–

string a = "アイウエオ";
string b = "アイウエオ";
if (System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare(a, b)==0)
    textBox1.Text = "同じ";
else
    textBox1.Text = "違う";

——————————————————————–

次に System.Globalization.CompareOptions の IgnoreWidth オプションを使ったコードを示す。こちらでは「同じ」という評価を得る。

——————————————————————–

string a = "アイウエオ";
string b = "アイウエオ";
if (System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare
(コードの続き)(a, b,System.Globalization.CompareOptions.IgnoreWidth)==0)
    textBox1.Text = "同じ";
else
    textBox1.Text = "違う";

——————————————————————–

このように System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare クラスは多言語の特性に対応しており、日本語特有の評価を行うことができる。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。