11
string body = Selenium.GetBodyText();

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

string does not contain a definition for Contains当我执行上述操作时,我会收到一条消息。我在这里做错了什么?提前谢谢大家!

我正在尝试检查正文是否有字符串“软件”、“软件”或“软件”。正文将包含文本(字符串)的段落和段落。

4

10 回答 10

12

我不相信string服用Contains. StringComparison但是,您可以使用IndexOf which does

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

我不确定您是否使用 .NET 1.1,但它不包含方法Contains. 你必须使用IndexOf. .NET 2.0 添加了Contains (per MSDN)方法。使用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 只接受一个参数 - 你的代码应该是

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

Contains只有一个参数 - 与之比较的字符串。你的意思是,Equals哪个需要 a StringComparison

于 2011-07-28T14:01:02.457 回答
1

从粘贴的代码中,您声明了一个字符串类型的变量“body”,并使用了另一个未声明的变量“bodyText”。

于 2011-07-28T13:57:15.350 回答
1

String 没有具有该签名的 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

如果在将其转换为相同大小写(大写或小写)后进行比较,您仍然可以使用包含

例如:

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

我参加这个聚会很晚了,但希望我能从我刚刚陷入的困境中救出一个人。

随着 .net core 2.1 的重载Compare(String, StringComparison)可用。在撰写本文时,如果您使用的是 .net Framework 或更早版本的核心,则需要使用此处列出的不同解决方案。

Grip:MSFT 能否将框架选择器保留在api 文档页面上的一个位置?曾经是顶部和中心,“适用于”非常具有误导性。

于 2020-08-21T19:31:14.920 回答