C# 如何计算字符串中的唯一字符
假设我们有变量myString=“blabla”或myString=998769C# 如何计算字符串中的唯一字符,c#,string,char,C#,String,Char,假设我们有变量myString=“blabla”或myString=998769 myString.Length; //will get you your result myString.Count(char.IsLetter); //if you only want the count of letters: 如何获得唯一字符数?我的意思是“blabla”的结果必须是3,doe“998769”将是4。是否有准备就绪功能?有什么建议吗?您可以使用LINQ: var count = my
myString.Length; //will get you your result
myString.Count(char.IsLetter); //if you only want the count of letters:
如何获得唯一字符数?我的意思是“blabla”的结果必须是3,doe“998769”将是4。是否有准备就绪功能?有什么建议吗?您可以使用LINQ:
var count = myString.Distinct().Count();
它使用了一个事实,string
实现了IEnumerable
在没有LINQ的情况下,您可以在内部执行与Distinct
相同的操作,并使用HashSet
:
var count=(新HashSet(myString)).count;
如果您使用的是C#,那么Linq会很好地帮助您-再次:
"blabla".Distinct().Count()
就可以了。如果你只处理英文的ANSI文本(或BMP中的字符),那么80%的次数是在写:
myString.Distinct().Count()
你会过得很快乐,不会有任何麻烦。让我只为那些真正需要以正确方式处理问题的人发布这个答案。我想说每个人都应该这样做,但我知道这不是真的(引自维基百科):
因为最常用的字符都在基本的多语言平面中,代理项对的处理通常没有经过彻底的测试。这会导致持续的错误和潜在的安全漏洞,即使是在流行且经过充分审查的应用软件中(例如CVE-2008-2938、CVE-2012-2135)
<强>我们的第一个NA解决方案的问题是,<强>不能正确处理Unicode < /强>,并且它也没有考虑“强”>什么是用户感知为字符< /强>。让我们试试
“您不需要将其转换为字符数组,而且它是独特的()
而不是Disctinct()
如此真实,按建议删除。完整代码必须是这样吗?
myString.Distinct().Count()