您可以使用命名空间System.Linq中的扩展方法.Contains():
using System.Linq;
...
if (abc.ToLower().Contains('s')) { }
此外,要检查布尔表达式是否为真,您不需要== true
由于Contains 方法是一种扩展方法,我的解决方案可能会令人困惑。这里有两个版本不需要你加using System.Linq;:
if (abc.ToLower().IndexOf('s') != -1) { }
// or:
if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }
更新
如果您愿意,您可以编写自己的扩展方法以便于重用:
public static class MyStringExtensions
{
public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
}
public static bool ContainsAnyCase(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
}
}
那么你可以这样称呼他们:
if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }
在处理用户数据的大多数情况下,您实际上希望使用CurrentCultureIgnoreCase(或ContainsAnyCase 扩展方法),因为这样可以让系统处理大小写问题,这取决于语言。在处理计算问题时,例如 HTML 标签的名称等,您希望使用不变的文化。
例如:在土耳其语中,小写的大写字母I是ı(不带点),而不是i(带点) >.