添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C#不区分大小写的字符串包含检查

在本教程中,我们将学习在C#中进行不区分大小写的字符串包含检查的不同方法。

这看起来是一个简单的问题,但是默认的C# string.Contains() 方法是区分大小写的。

而如果字符串不是英语语言,即对于其他语言,我们不能直接比较文本的大小写不敏感。

两个字符串应该在同一文化中,我们应该知道语言文化。

大多数情况下,我们只比较英语语言的字符串。

方法1:使用C# string.IndexOf() 方法。

我们可以使用C# string.IndexOf() 方法来做不分大小写的字符串包含检查。

IndexOf() 该方法接受 StringComparison.OrdinalIgnoreCase 参数,该参数指定了要使用的字符搜索类型。


string textToCheck = "STRING Contains";
bool contains = textToCheck.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

方法2:在.Net 5+ & .NET Core 2.0+中使用 string.Contains() 方法。

在最新版本的dot net中,即在.Net Core 2.0+和.Net 5+中。 string.Contains() 方法有一个重载方法,它接受 StringComparison 参数。


string textToCheck = "STRING Contains";
bool checkContains = textToCheck.Contains("string",StringComparison.OrdinalIgnoreCase);

方法3:使用 Regex.IsMatch() 方法

我们可以使用正则表达式来做不区分大小写的包含字符串检查。

如果你熟悉 Regex ,使用 Regex.IsMatch() 方法,并通过 RegexOptions.IgnoreCase 参数来检查不区分大小写。

var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = Regex.IsMatch(stringToCheck, Regex.Escape(substring), RegexOptions.IgnoreCase);
//true

方法4:使用 .ToUpper() & .ToLower()

如果字符串是英文,并且性能不是问题,我们可以将两个字符串转换成相同的大小写,然后进行字符串包含检查。


var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = stringToSearch.ToLower().Contains(substring.ToLower());
bool contains = stringToSearch.ToUpper().Contains(substring.ToUpper());
//true

C#对大小写不敏感的其他语言的包含检查

大小写不敏感是与语言有关的。

例如,在英语中, I i 的大写版本。

而在土耳其语中, i 的大写版本是陌生的字符 İ

为了进行不区分大小写的字符串检查,我们需要使用 CultureInfo 对象。


var text = "İ";
var check = "i";
CultureInfo trCulture = new CultureInfo("tr-TR",false);
bool englishContains = text.IndexOf(check, StringComparison.OrdinalIgnoreCase) >= 0;
//false