如何忽略字符串比较的空格?

时间:2018-03-11 08:49:53

标签: c# .net

我有字符串列表。在某些时候,我需要检查列表是否包含一些字符串。

例如:

  public List<string> Headers { get; private set; }

  Headers = new List<string>();
  Headers.Add("bla1 bla1 ");// pay attention to the whitespace at the end
  Headers.Add("bla2 bla2");
  Headers.Add("bla3 bla3");
  Headers.Add("bla4 bla4");

在某些时候,我需要检查字符串列表是否包含例如"bla1 bla1"字符串。

为此我使用这行代码:

var isExists = Headers
    .Where(h =>!h.Equals("bla1 bla1", StringComparison.InvariantCultureIgnoreCase)

isExists变量的结果为false,因为标题包含"bla1 bla1"字符串,末尾有空格。

如何在字符串的开头和结尾忽略whitespaces

4 个答案:

答案 0 :(得分:11)

您可以调用Trim()删除字符串开头和结尾处的任何空格,然后再点击Equals

h.Trim().Equals("bla1 bla1", StringComparison.InvariantCultureIgnoreCase)

如果我们要删除所有空格,我们可以使用Replace()之类的:

string name = " Ehsan Sajjad Developer ";
string result = name.Replace(" ",String.Empty); // result EhsanSajjadDeveloper

答案 1 :(得分:1)

您可以使用此正则表达式从行尾和行首删除空白

string withoutSpace = Regex.Replace("   bla1 bla1     ", @"^\s+|\s+$", "");
Console.Write(withoutSpace);

输出将是&#34; bla1 bla1&#34;

答案 2 :(得分:0)

灵活地比较字符串的好方法是正则表达式。 &#34; \ s *&#34;表示零个或多个空格序列。 ^表示字符串的开头,$表示字符串的结尾:表示它不匹配其中包含其他内容的字符串。

// Needs using System.Text.RegularExpressions
var blablaPattern=new Regex(@"^\s*bla1 bla1\s*$", RegexOptions.IgnoreCase);
var isExists = Headers.Where(h =>!blablaPattern.IsMatch(h))

答案 3 :(得分:0)

String1.replace(" ", string.empty).equals(string2.replace(" ", string.empty), StringComparison.InvariantCultureIgnoreCase)