C#包含用于空白的方法

本文关键字:方法 空白 用于 包含 | 更新日期: 2023-09-27 18:20:53

我在使用contains方法检查列表中的特定值时遇到了问题,它似乎无法正常工作,是否有其他方法可以检查带有空格的字符串值。

例如:

  string test = "Hello Stack Person";
  if(test.ToLower().Contains("hello stack person"))
  {
    //code to execute
  }

如果我的if语句不成立,我是不是做错了什么?

thanx!

C#包含用于空白的方法

首先,您应该检查您认为是空白的字符是否真的是空白。如果它们是不间断的空间,那么像你发布的这样简单的比较是行不通的。虽然我相信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。如果您指的是字符串的字符数组,请使用String.IndexOf:

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

不要使用ToLower进行区分大小写比较,而是使用StringComparison

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