17

私はC#4.5アプリを開発していますが、次の比較のためにtrueを返す関数が必要です。

"blaLéOnArd/obla" .ComplexContains( "leonardo")

つまり、string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace)「含む!」もチェックする必要があります。

誰か助けてもらえますか?

4

1 に答える 1

39

適切なを使用して、結果を-1と照合することができCompareInfoますCompareInfo.IndexOf(string, string, CompareOptions)。サンプル:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        var compareInfo = CultureInfo.InvariantCulture.CompareInfo;
        var options = CompareOptions.IgnoreCase | 
            CompareOptions.IgnoreSymbols |
            CompareOptions.IgnoreNonSpace;

        var haystack = "bla Lé OnAr d/o bla";
        var needle = "leonardo";

        var index = compareInfo.IndexOf(haystack, needle, options);
        Console.WriteLine(index); // 4
    }
}

またはメソッド形式:

private static bool ComplexContains(string source, string value)
{
    var index = CultureInfo.InvariantCulture.CompareInfo.IndexOf
        (source, value, CompareOptions.IgnoreCase | 
         CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace);
    return index != -1;
}
于 2013-03-02T20:14:34.477 に答える