是否有任何内置方法可以删除字符串中的类似字符?
例子:
aaaabbbccc -> abc
aabbccaa -> abc
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以使用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)
这样的事情能解决你的问题吗?
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)
希望这可以帮助.