string body = Selenium.GetBodyText();
if (body.Contains("software", StringComparison.CurrentCultureIgnoreCase))
{
//do something
}
当我执行上述操作时,我收到string does not contain a definition for Contains
消息。我在这做错了什么?提前谢谢大家!
我正在尝试检查主体是否有字符串“software”,“Software”或“SOFTWARE”。 body将包含文本的段落和段落(字符串)。
答案 0 :(得分:9)
我不相信string
的{{3}}超载StringComparison
。但是,您可以使用IndexOf
Contains
:
if (body.IndexOf("software", StringComparison.CurrentCultureIgnoreCase) != -1)
答案 1 :(得分:7)
我不确定您是否使用.NET 1.1,但它不包含方法Contains
。您必须使用IndexOf
。 .NET 2.0添加了方法Contains (per MSDN)。使用IndexOf, you can use StringComparison。
答案 2 :(得分:5)
您可以使用正则表达式匹配C#中的字符串搜索。您还可以选择忽略大小写。
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
此链接可能有用:How to: Search Strings Using Regular Expressions (C# Programming Guide)
答案 3 :(得分:3)
String.Contains只接受一个参数 - 你的代码应该是
bodyText.Contains("software");
答案 4 :(得分:2)
Contains
只有一个参数 - 它与之比较的字符串。您的意思是,Equals
确实需要StringComparison
吗?
答案 5 :(得分:1)
从已粘贴的代码中,您将声明一个字符串类型的变量“body”,并使用另一个未声明的变量“bodyText”。
答案 6 :(得分:1)
String没有包含该签名的Contains方法。 str.Contains(chr,StringComparison),而不是str.Contains(string,StringComparison)......
答案 7 :(得分: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;
}
}
答案 8 :(得分:0)
您仍然可以使用包含,只要在将其转换为相同的大小写(UPPER或更低)
后进行比较例如:
"samplestring".ToUpper().Contains("SAMPLESTRING")
答案 9 :(得分:0)
我参加这个聚会很晚了,但是希望我可以从刚参加的会议中救出一个人。
使用.net core 2.1,重载Compare(String, StringComparison)
可用。在撰写本文时,如果您使用的是.net Framework或更早版本的core,则需要使用此处列出的其他解决方案。
抓地力:MSFT是否可以将框架选择器放在api docs page上的某个位置?过去一直居于首位,居中,“适用于”很容易引起误解。