我有一个函数可以返回文本中重复的(出现 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/