SLa*_*aks 107

您可以使用LINQ:

String.Concat(str.OrderBy(c => c))
Run Code Online (Sandbox Code Playgroud)

如果要删除重复项,请添加.Distinct().

  • 这比“Array.Sort”慢得多。请参阅罗伊的回答。 (7认同)

Roy*_*tus 76

是; 将字符串复制到char数组,对char数组进行排序,然后将其复制回字符串.

static string SortString(string input)
{
    char[] characters = input.ToArray();
    Array.Sort(characters);
    return new string(characters);
}
Run Code Online (Sandbox Code Playgroud)

  • 根据我的微观基准测试,这种方法的运行速度比使用"OrderBy"快3倍. (9认同)
  • +1,因为负面标记,我不明白为什么.我跑了一个基准,这远远优于LINQ.使用OrderBy对"patrick"进行排序,将"00:00:00.0000666"与Array.Sort`00:00:00.0000022`进行排序 (6认同)
  • 对于字符串,您可以使用“ToCharArray()”或“ToArray()”来获得相同的结果,但前者可能会提供更好的性能。请参阅/sf/ask/2599733741/ Between-tochararray-and-toarray (3认同)
  • 显然,方法名称是ToCharArray(),而不是ToArray(). (2认同)

age*_*t-j 25

new string (str.OrderBy(c => c).ToArray())
Run Code Online (Sandbox Code Playgroud)

  • 使用new string会比string.concat快得多.因此,如果我们考虑性能,新的字符串将获胜. (2认同)

小智 8

你可以用这个

string x = "ABCGH"

char[] charX = x.ToCharArray();

Array.Sort(charX);
Run Code Online (Sandbox Code Playgroud)

这将对您的字符串进行排序。