我无法使用 contains 方法检查列表中的特定值,它似乎无法正常工作,是否有另一种方法来检查带有空格的字符串值。
例如:
string test = "Hello Stack Person";
if(test.ToLower().Contains("hello stack person"))
{
//code to execute
}
但是我的 if 语句不接受,我做错了吗?
谢谢!
我无法使用 contains 方法检查列表中的特定值,它似乎无法正常工作,是否有另一种方法来检查带有空格的字符串值。
例如:
string test = "Hello Stack Person";
if(test.ToLower().Contains("hello stack person"))
{
//code to execute
}
但是我的 if 语句不接受,我做错了吗?
谢谢!
首先,您应该检查您认为是空格的字符是否真的是空格。如果它们是不间断的空间,那么像您发布的简单比较将不起作用。虽然我相信 Unicode 有更多的可能性,但这在大多数情况下应该可以解决问题。
if (test.ToLower().Replace('\u00A0', ' ').Contains("hello stack person"))
{
// code
}
现在我不知道你为什么要以这种方式处理不间断空格,因为它们几乎只用于正确呈现文本。尽管如此,我已经遇到过这样的问题,我花了一些时间才意识到问题出在哪里,因为我比较的两个字符串在我看来都是一样的。
使用 trim() 删除空格
如果您使用的是列表,请使用Select
var selection = list.Select(x => x.ToString()
.Trim().ToLower() == "hello stack person");
获得真假使用Any
var result = list.Any(x => x.ToString()
.Trim().ToLower() == "hello stack person");
我不明白你叫什么list
。如果您指的是字符串的 char 数组,请使用String.IndexOf
:
string test = "Hello Stack Person";
bool contains = test.IndexOf("hello stack person", StringComparison.OrdinalIgnoreCase) >= 0;
不要用于ToLower
不区分大小写的比较,但是StringComparison
.
请参阅:您的代码是否通过了土耳其测试?