プログラム 技術

文字列に含まれる空白などを無視して比較する

仕事などで文字列を比較することが多々あり、その際に半角や全角を気にする必要がありました
今回紹介する機能を使用すればそこら辺を気にすることがなくなりそうです
C#の純粋な機能のため特に追加作業はありません

比較内容を設定する

比較内容を設定します
それぞれの設定を「|(パイプライン)」でつなぐことで複数指定できます
必要に応じて適宜設定してください

// 比較条件を設定
CompareOptions compareOptions =
    // 大文字小文字を区別しない
    CompareOptions.IgnoreCase |
    // 全角半角を区別しない
    CompareOptions.IgnoreWidth |
    // ひらがなカタカナを区別しない
    CompareOptions.IgnoreKanaType |
    // 空白や記号を無視する
    CompareOptions.IgnoreSymbols;

文字列を比較する

以下の文字列を演算子で比較するとFalseが返ってきます
CompareOptionsに設定した内容とCompareInfoクラスを使用するとTrueが返ってきます

string test1 = "AbcD E F"
string test2 = ".abcdef/"

// 演算子で比較する
// Falseが返ってくる
Console.WriteLine($"{test1} と {test2} の比較 { test1 == test2 }")

// CompareOptionsとCompareInfoで比較する
// 文字列比較を使用するため、現在の使用言語のCompareInfoを取得
CompareInfo compareInfo = CultureInfo.CurrentCulture.CompareInfo;
// Trueが返ってくる
Console.WriteLine($"{compareInfo.Compare(text1, text2, compareOptions) == 0}");

文字列が含まれているかをチェック

以下の文字列をIndexOfでチェックすると -1 が返ってきて含まれていないと判断されています
CompareOptionsに設定した内容とCompareInfoクラスを使用すると含まれていると判断されます

string test1 = "あAbcd"
string test2 = "aBc"

// IndexOfでチェック
// -1 が返ってくる
Console.WriteLine($"{test1.IndexOf(test2)}");

// CompareOptionsとCompareInfoでチェックする
// Trueが返ってくる(0より大きい値だと含まれていると判定)
Console.WriteLine($"{compareInfo.IndexOf(text1, text2, compareOptions) > 0}");

-プログラム, 技術
-