如果我使用 LINQ 如何限制搜索字符
我有一个函数可以返回文本中重复的(出现两次或多次)字符。我使用 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....等。 感谢您的帮助。
I have a function that returns duplicated (occur 2 or more times) characters in text. I do it with LINQ:
public char[] linq(string text)
{
char[] result = text
.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key).ToArray();
return result;
}
But this way returns duplicated occurrences of all characters in the text (string). How to limit searching, if I want to search just English alphabet characters: abcdefghi....etc.
Thanx for help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
像这样的东西吗?
仅当您需要将字符范围限制为可配置列表时,此解决方案才适用。
请注意,
char.IsLetter()
方法也将允许其他字母表(即西里尔字母、希腊语等)的字符通过,因此这可能并不理想。没有传递可配置列表的下一个最好的事情是 @Femaref 的解决方案,在我看来明确使用英文字母的字符代码 - 这可能最适合您的特定问题。
Something like this?
This solution only applies if you need to limit the character range to a configurable list.
Note that the
char.IsLetter()
method will allow characters from other alphabets (i.e. cyrillic, greek, etc.) to pass as well, so this might not be ideal.Next best thing w/o passing a configurable list is @Femaref's solution imo explicitly using the character codes of the English alphabet - this might work best in your particular problem.
看起来 char.IsLetter() 就是你想要的: char.IsLetter()
Looks like char.IsLetter() is what you want: char.IsLetter()
这就是你所需要的。
// http://msdn.microsoft.com/en-us /library/system.char.isletter.aspx
This is what you need.
// http://msdn.microsoft.com/en-us/library/system.char.isletter.aspx
评论更新:
Update from comments: