c# - 如果我使用 LINQ,如何限制搜索字符

标签 c# linq string search character

我有一个函数可以返回文本中重复的(出现 2 次或更多次)字符。我用 LINQ 来做:

 public char[] linq(string text)
    {            
        char[] result = text
            .GroupBy(x => x)
            .Where(g => g.Count() > 1)
            .Select(g => g.Key).ToArray();
        return result;
    }  

但是这种方式返回文本(字符串)中所有字符的重复出现。如何限制搜索,如果我只想搜索英文字母字符:abcdefghi ....等。 感谢您的帮助。

最佳答案

是这样的吗?

linq("and a rhino 11", new char[] { 'a', 'b', 'c' }); // result: { 'a' }

public char[] linq(string text, char[] limitChars)
{
    char[] result = text
        .Where( c => limitChars.Contains(c))
        .GroupBy(x => x)
        .Where(g => g.Count() > 1)
        .Select(g => g.Key)
        .ToArray();
    return result;
}  

此解决方案仅适用于需要将字符范围限制为可配置 列表的情况。

请注意,char.IsLetter() 方法将允许来自其他字母表(即西里尔字母、希腊字母等)的字符也通过,因此这可能并不理想。

没有传递可配置列表的下一个最好的事情是@Femaref 的解决方案 imo 明确使用英文字母表的字符代码 - 这可能最适合您的特定问题。

关于c# - 如果我使用 LINQ,如何限制搜索字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285977/

相关文章:

c# - UWP:ListView ItemClick 不起作用

c# - 有效跳过二维字符串数组中的空白行

c# - 使用 Linq 获取字段中具有重复值的最后 N 行

C# 林奇 : Efficient way to set anonymous type property based on other values in query?

java - 将字符串数据分配给 URL 对象

c# - 如何将字符串转换为颜色?对于 Windows Phone C#

c# - 在不使用 InlineAutoData 的情况下使用 InlineAutoData 时的额外测试运行

C# 使用序列化将对象附加到 xml 文件

c++ - 是否可以打印出与循环计数器对应的字符串

c# - Interlock.Add() for double