lambda表达式用于获取具有特殊字符的多个数组元素

时间:2016-01-27 05:50:00

标签: c# lambda substring

如何使用lambda表达式获取其中包含特殊字符的值列表?

我有一个名为values的数组中的文本项列表,并希望包含特殊字符的文本项列表。

var specialCharacters = new string[] { ",", ":", "=" };

我尝试了几次而且没有用。

var ans = Array.FindAll(values, value => value.Split(specialCharacters, StringSplitOptions.None).Length > 0);

我也被尝试了

var ans2 = values.Where(value => (value.Split(specialCharacters, StringSplitOptions.None)).Length > 0).ToList();

这两个表达都不适合我。输出与数组“值”相同。

2 个答案:

答案 0 :(得分:1)

你应该使用这个

 var ans2 = values.Where(value => (value.Split(specialCharacters, StringSplitOptions.None)).Length > 1).ToList();

用1检查长度。 因为如果value中没有特殊字符,那么也将创建长度为1且在其第0个索引处具有value的数组。

答案 1 :(得分:0)

虽然@Viplock的回答很好,但我认为拆分所有字符串是最有效的方法。考虑这样的事情:

char[] specialCharacters = { ',', ':', '=' };
IEnumerable<string> result = values.Where(s => ContainsSpecialCharacter(s, specialCharacters));

... ContainsSpecialCharacter定义如下:

private static bool HasSpecialCharacter(string s, char[] specialCharacters)
{
    return specialCharacters.Any(specialCharacter => s.Contains(specialCharacter));
}

我还将SpecialCharacters更改为char s的数组,但无论哪种方式都可以。

警告:我的表现主张可能是错的;我还没有做过任何测量。 : - )