我无法检查列表中的特定值,使用contains方法,它似乎无法正常工作,是否有另一种方法可以检查带空格的字符串值。
例如:
string test = "Hello Stack Person";
if(test.ToLower().Contains("hello stack person"))
{
//code to execute
}
如果我的if语句没有采取,我做错了什么?
感谢名单!
答案 0 :(得分:2)
首先,您应该检查您认为是空格的字符是否真正空格。如果它们是不间断的空格,那么像您发布的简单比较将无效。虽然我认为Unicode拥有更多的可能性,但在大多数情况下这应该可以解决问题。
if (test.ToLower().Replace('\u00A0', ' ').Contains("hello stack person"))
{
// code
}
现在我不知道为什么你甚至不得不以这种方式处理非破坏空间,因为它们几乎只用于正确渲染文本。我曾经遇到过这样的问题,我花了一些时间才意识到问题是什么,因为我将两个字符串看起来看起来与我相同。
答案 1 :(得分:0)
使用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");
答案 2 :(得分:0)
我看不到你所说的list
。如果您指的是字符串的char数组,请使用String.IndexOf
:
string test = "Hello Stack Person";
bool contains = test.IndexOf("hello stack person", StringComparison.OrdinalIgnoreCase) >= 0;
请勿使用ToLower
来区分不区分大小写的StringComparison
。