C++/CLI

【C++/CLI】大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較する

字列を比較する際に、文字の大文字/小文字、全角/半角、ひらがな/カタカナを区別せず比較したい場合があります。

大文字/小文字を区別せずに比較するのは、比較的、情報も多く、

System.StringクラスのCompareメソッド

を使います。
使用例はこんな感じ↓

 

String^ strA = "Labeling";
String^ strB = "labeling";

if (String::Compare(strA, strB, true) == 0){
MessageBox::Show("strAとstrBは同じ");
}

 

ただ、実際には、日本語を比較する場合は、全角/半角、ひらがな/カタカナを区別しないで比較したい場合が多く、この場合はSystem.Globalization.CompareInfoクラスCompareメソッドを使います。

 

(使用例)

System::Globalization::CompareInfo^ ci =
System::Globalization::CultureInfo::CurrentCulture->CompareInfo;

String^ strA = "ラベリング";
String^ strB = "らべりんぐ";

if (ci->Compare(strA, strB,
System::Globalization::CompareOptions::IgnoreWidth |         //全角/半角を無視
System::Globalization::CompareOptions::IgnoreCase |          //大文字/小文字を無視
System::Globalization::CompareOptions::IgnoreKanaType    //ひらがな/カタカナを無視
) == 0){
MessageBox::Show("strAとstrBは同じ");
}

 

詳しくはDOBON.NETの

2つの文字列が等しいかを調べる
大文字小文字、半角全角、ひらがなカタカナの区別をしないで文字列を比較する

が参考になります。

 

実は”ラベリング”と”ラベリング”の文字列を比較するのに大はまりして、
ひらがなの”ベ” と カタカナの ”ベ” がある事に気が付くまで、とても苦労してしまいました...

コメント

タイトルとURLをコピーしました