我有字符串列表。在某些时候,我需要检查列表是否包含一些字符串。
例如:
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
?
答案 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)