C# 如何计算字符串中的唯一字符

C# 如何计算字符串中的唯一字符,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=“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 = 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()