11
string body = Selenium.GetBodyText();

if (body.Contains("software", StringComparison.CurrentCultureIgnoreCase))
{
   //do something
}

上記をstring does not contain a definition for Contains行うとメッセージが表示されます。私はここで何が間違っているのですか?みなさん、よろしくお願いします!

bodyに「software」、「Software」、「SOFTWARE」の文字列が含まれているかどうかを確認しようとしています。本文には、段落とテキスト(文字列)の段落が含まれます。

4

10 に答える 10

12

私は取るのstring過負荷があるとは思わない。ただし、次のいずれかを使用できます。ContainsStringComparisonIndexOf

if (body.IndexOf("software", StringComparison.CurrentCultureIgnoreCase) != -1)
于 2011-07-28T13:57:15.153 に答える
7

.NET 1.1を使用しているかどうかはわかりませんが、メソッドが含まれていませんでしたContains。を使用する必要がありますIndexOf。.NET 2.0は、(MSDNごとに)Containsメソッドを追加しました。IndexOfを使用すると、StringComparisonを使用できます

于 2011-07-28T13:56:30.963 に答える
5

正規表現を使用して、C#での文字列検索に一致させることができます。大文字と小文字を区別しないオプションもあります。

if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))

このリンクは役立つ場合があります。方法:正規表現を使用して文字列を検索する(C#プログラミングガイド)

于 2011-07-28T15:13:37.673 に答える
3

String.Containsは1つのパラメーターのみを取ります-コードは次のようになります

bodyText.Contains("software");
于 2011-07-28T13:59:12.217 に答える
2

Containsパラメータは1つだけです。つまり、比較対象の文字列です。つまり、EqualsどちらがかかりStringComparisonますか?

于 2011-07-28T14:01:02.457 に答える
1

貼り付けられたコードから、文字列型の変数「body」を宣言し、宣言されていない別の変数「bodyText」を使用しています。

于 2011-07-28T13:57:15.350 に答える
1

文字列には、そのシグネチャを持つContainsメソッドがありません。str.Contains(chr、StringComparison)ではなく、str.Contains(string、StringComparison).. ..

于 2011-07-28T13:57:19.673 に答える
1

いつでも拡張メソッドを作成できます(.Net 3.5以降を使用している場合)。

public static class StringExtensions
{
    /// <summary>
    /// Returns a value indicating whether the specified String object 
    /// occurs within this string.
    /// </summary>
    /// <param name="str">string object being extended</param>
    /// <param name="value">string object to check for</param>
    /// <param name="comparer">StringComparer to use</param>
    public static bool Contains(this string str, string value, StringComparer comparer)
    {
        StringComparison comparison;
        if (comparer == StringComparer.CurrentCulture)
            comparison = StringComparison.CurrentCulture;
        else if (comparer == StringComparer.CurrentCultureIgnoreCase)
            comparison = StringComparison.CurrentCultureIgnoreCase;
        else if (comparer == StringComparer.InvariantCulture)
            comparison = StringComparison.InvariantCulture;
        else if (comparer == StringComparer.InvariantCultureIgnoreCase)
            comparison = StringComparison.InvariantCultureIgnoreCase;
        else if (comparer == StringComparer.Ordinal)
            comparison = StringComparison.Ordinal;
        else if (comparer == StringComparer.OrdinalIgnoreCase)
            comparison = StringComparison.OrdinalIgnoreCase;
        else
            comparison = StringComparison.Ordinal;

        if (str.IndexOf(value, comparison) != -1)
            return true;
        else
            return false;
    }
}
于 2013-10-16T12:29:31.673 に答える
0

同じケース(UPPER以下)に変換した後で比較すれば、Containsを引き続き使用できます。

例えば:

"samplestring".ToUpper().Contains("SAMPLESTRING")
于 2011-07-28T14:02:37.847 に答える
0

私はこのパーティーにとても遅れていますが、うまくいけば、私がちょうど入っていた穴から誰かを救うことができます。

.netコア2.1ではオーバーロードCompare(String, StringComparison)が利用可能になりました。この記事の執筆時点で、.net Frameworkまたは以前のバージョンのコアを使用している場合は、ここに記載されている別のソリューションを使用する必要があります。

グリップ:MSFTは、フレームワークセレクターをAPIドキュメントページの1か所に保持してください。以前はトップとセンターでしたが、「適用対象」は非常に誤解を招く恐れがあります。

于 2020-08-21T19:31:14.920 に答える