c# – 使用LINQ从字符串中删除字符

前端之家收集整理的这篇文章主要介绍了c# – 使用LINQ从字符串中删除字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过编写一些简单的扩展方法来刷新我的LINQ.有没有更好的方法来编写如下功能,从字符串(使用LINQ)中删除给定的字符列表?

它有助于我想到LINQ依赖的扩展方法

  1. public static string Remove(this string s,IEnumerable<char> chars)
  2. {
  3. string removeChars = string.Concat(chars);
  4.  
  5. return new string(s.tocharArray().Where(c => !removeChars.Contains(c)).ToArray());
  6. }

但那很丑陋Ergo LINQ.

我在LINQ语句中注意到的区别是我必须使用’select’,而使用扩展方法,我不必.

  1. /// <summary>Strip characters out of a string.</summary>
  2. /// <param name="chars">The characters to remove.</param>
  3. public static string Remove(this string s,IEnumerable<char> chars)
  4. {
  5. string removeChars = string.Concat(chars);
  6.  
  7. var stripped = from c in s.tocharArray()
  8. where !removeChars.Contains(c)
  9. select c;
  10.  
  11. return new string(stripped.ToArray());
  12. }

所以我想知道这个(上面的最后一个片段)是否是最简单的LINQ语句来完成字符的删除.

解决方法

我更喜欢使用扩展方法的第一种形式,虽然简化为
  1. public static string Remove(this string s,IEnumerable<char> chars)
  2. {
  3. return new string(s.Where(c => !chars.Contains(c)).ToArray());
  4. }

至于select关键字,则必须以第二种形式. documentation说“查询表达式必须使用select子句或组语句终止”.这就是为什么我会避免LINQ语法糖.

猜你在找的C#相关文章