17

次のコードを使用して2つの文字列を比較しています

string1.Contains(string2)

しかし、大文字と小文字を区別しない検索の結果が得られません。さらに、String.Compare cozを使用することはできません。名前が非常に大きいため、名前全体を一致させたくありません。私の必要性は大文字と小文字を区別しない検索を行うことであり、検索テキストはString1に含まれる任意の長さにすることができます。

例:用語* * ** * ** * ** ****名前ですテキストボックスに「erm」と入力すると、結果が得られます。しかし、「term」と入力しても結果が得られません。誰かが私を助けることができますか:)

4

7 に答える 7

19

これを試して:

string.Equals("this will return true", "ThIs WiLL ReTurN TRue", StringComparison.CurrentCultureIgnoreCase)

または、次のものが含まれます。

if (string1.IndexOf(string2, StringComparison.CurrentCultureIgnoreCase) >= 0)
于 2012-05-29T10:31:56.693 に答える
10

私はこのような拡張方法を好みます。

public static class StringExtensions
{
    public static bool Contains(this string source, string value, StringComparison compareMode)
    {
        if (string.IsNullOrEmpty(source))
            return false;

        return source.IndexOf(value, compareMode) >= 0;
    }
}

このようにして、大文字または小文字でのコストのかかる変換を回避できることに注意してください。

この構文を使用して拡張機能を呼び出すことができます

 bool result = "This is a try".Contains("TRY", StringComparison.InvariantCultureIgnoreCase);
 Console.WriteLine(result);

注意:上記の拡張機能(すべての拡張メソッドに当てはまります)は、ネストされていない非ジェネリック静的クラス内で定義する必要があります。MSDN参照を参照してください。

于 2012-05-29T10:36:39.757 に答える
6

両方の文字列を同じ大文字小文字大文字または小文字)に変換します。

string1.ToUpper().Contains(string2.ToUpper());
于 2012-05-29T10:29:34.210 に答える
5

なぜこれではないのですか?

if(string1.IndexOf(string2、StringComparison.OrdinalIgnoreCase)> = 0)
{{  
}
于 2012-05-29T10:34:38.767 に答える
0
string1.ToUpperInvariant().Contains(string2.ToUpperInvariant());
于 2012-05-29T10:30:03.203 に答える
0

両方の文字列を大文字に変換するか、正規表現を使用できます。

using System.Text.RegularExpressions;

class Program {
    static void Main(string[] args) {
        string string1 = "TermSomething";
        string string2 = "term";
        bool test1 = string1.ToUpperInvariant().Contains(string2.ToUpperInvariant());
        bool test2 = Regex.IsMatch(string1, Regex.Escape(string2), RegexOptions.IgnoreCase);
    }
}

正規表現を使用する場合は、検索文字列をエスケープして、特殊な正規表現文字が文字どおりに解釈されるようにする必要があることに注意してください。

于 2012-05-29T10:31:07.117 に答える
0
Regex.IsMatch(string1,string2,RegexOptions.IgnoreCase);

これはブール値を返します.....

于 2012-05-29T10:42:29.933 に答える