-1

我无法使用 contains 方法检查列表中的特定值,它似乎无法正常工作,是否有另一种方法来检查带有空格的字符串值。

例如:

  string test = "Hello Stack Person";

  if(test.ToLower().Contains("hello stack person"))
  {
    //code to execute
  }

但是我的 if 语句不接受,我做错了吗?

谢谢!

4

3 回答 3

3

首先,您应该检查您认为是空格的字符是否真的是空格。如果它们是不间断的空间,那么像您发布的简单比较将不起作用。虽然我相信 Unicode 有更多的可能性,但这在大多数情况下应该可以解决问题。

if (test.ToLower().Replace('\u00A0', ' ').Contains("hello stack person"))
{
    // code
}

现在我不知道你为什么要以这种方式处理不间断空格,因为它们几乎只用于正确呈现文本。尽管如此,我已经遇到过这样的问题,我花了一些时间才意识到问题出在哪里,因为我比较的两个字符串在我看来都是一样的。

于 2013-07-04T09:00:57.580 回答
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");
于 2013-07-04T07:48:31.913 回答
0

我不明白你叫什么list。如果您指的是字符串的 char 数组,请使用String.IndexOf

string test = "Hello Stack Person";
bool contains = test.IndexOf("hello stack person", StringComparison.OrdinalIgnoreCase) >= 0;

不要用于ToLower不区分大小写的比较,但是StringComparison.

请参阅:您的代码是否通过了土耳其测试?

于 2013-07-04T08:04:21.667 回答