删除字符串中的类似字符

Loa*_*ati 0 c# string

是否有任何内置方法可以删除字符串中的类似字符?
例子:

aaaabbbccc ->  abc
aabbccaa -> abc
Run Code Online (Sandbox Code Playgroud)

谢谢

bru*_*nde 6

您可以使用a HashSet并为此构建扩展方法:

    static string RemoveDuplicateChars(this string s)
    {
        HashSet<char> set = new HashSet<char>();
        StringBuilder sb = new StringBuilder(s.Length);

        foreach (var c in s)
        {
            if (set.Add(c))
            {
                sb.Append(c);
            }
        }

        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

或使用Enumerable.Distinct,简单地说:

Console.WriteLine(new string("aaabbbccaddcacc".Distinct().ToArray()));
Run Code Online (Sandbox Code Playgroud)


Sea*_*lin 6

这样的事情能解决你的问题吗?

string distinct = new string("aaaabbbccc".Distinct().ToArray());
Run Code Online (Sandbox Code Playgroud)

它有点难看,但你可以把它包装成一个扩展方法:

public static string UniqueChars(this string original)
{
    return new string(original.Distinct().ToArray());
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.