加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:43:20 所属栏目:百科 来源:网络整理
导读:我想通过编写一些简单的扩展方法来刷新我的LINQ.有没有更好的方法来编写如下功能,从字符串(使用LINQ)中删除给定的字符列表? 它有助于我想到LINQ依赖的扩展方法: public static string Remove(this string s,IEnumerablechar chars){ string removeChars =
我想通过编写一些简单的扩展方法来刷新我的LINQ.有没有更好的方法来编写如下功能,从字符串(使用LINQ)中删除给定的字符列表?

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

public static string Remove(this string s,IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    return new string(s.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
}

但那很丑陋Ergo LINQ.

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

/// <summary>Strip characters out of a string.</summary>
/// <param name="chars">The characters to remove.</param>
public static string Remove(this string s,IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    var stripped = from c in s.ToCharArray()
                   where !removeChars.Contains(c)
                   select c;

    return new string(stripped.ToArray());
}

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读