关于.NET:以不区分大小写的方式查找子字符串-C#

Find a substring in a case-insensitive way - C#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Case insensitive contains(string)

使用字符串类的Contains()方法可以找到子字符串。如何以不区分大小写的方式查找字符串中的子字符串?


可以使用indexof()方法,该方法采用StringComparison类型:

1
2
string s ="foobarbaz";
int index = s.IndexOf("BAR", StringComparison.CurrentCultureIgnoreCase); // index = 3

如果找不到字符串,indexof()将返回-1。


没有不区分大小写的版本。使用的索引代替(或regex,尽管这不是推荐的,但杀伤力太强)。

1
2
3
string string1 ="my string";
string string2 ="string";
bool isContained = string1.IndexOf(string2, StringComparison.OrdinalIgnoreCase) >= 0;

StringComparison.OrdinalIgnoreCase通常用于更"可编程"的文本,如您可能生成的路径或常量,是字符串比较的最快方法。对于语言上使用StringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCase的文本字符串。


如果找到匹配项,则包含返回布尔值。如果要搜索不区分大小写,可以在匹配之前使源字符串和字符串同时匹配大小写。

例子:

1
2
3
4
if(sourceString.ToUpper().Contains(stringToFind.ToUpper()))
{
    // string is found
}

1
2
string myString ="someTextorMaybeNot";
myString.ToUpper().Contains("text".ToUpper() );

stringToSearch.ToLower().Contains(stringToSearchFor.ToLower())