有没有一种简单的方法可以按字母顺序对字符串中的字符进行排序
Posted
技术标签:
【中文标题】有没有一种简单的方法可以按字母顺序对字符串中的字符进行排序【英文标题】:Is there a simple way that I can sort characters in a string in alphabetical order 【发布时间】:2011-09-20 11:01:21 【问题描述】:我有这样的字符串:
var a = "ABCFE";
有没有一种简单的方法可以将此字符串排序为:
ABCEF
谢谢
【问题讨论】:
【参考方案1】:您可以使用 LINQ:
String.Concat(str.OrderBy(c => c))
如果要删除重复项,请添加.Distinct()
。
【讨论】:
这明显比Array.Sort
慢。请参阅 Roy 的回答。【参考方案2】:
是的;将字符串复制到 char 数组,对 char 数组进行排序,然后将其复制回字符串。
static string SortString(string input)
char[] characters = input.ToArray();
Array.Sort(characters);
return new string(characters);
【讨论】:
根据我的微基准测试,这种方法的运行速度比使用OrderBy
快大约 3 倍。
+1 因为负面标记,我不明白为什么。我跑了一个基准,这远远优于 LINQ。与 Array.Sort 00:00:00.0000022
相比,使用 OrderBy 对“patrick”进行排序需要 00:00:00.0000666
显然方法名是ToCharArray(),而不是ToArray()。
对于字符串,您可以使用 ToCharArray()
或 ToArray()
获得相同的结果,但前者可能会提供更好的性能。见***.com/questions/37139053/…【参考方案3】:
new string (str.OrderBy(c => c).ToArray())
【讨论】:
使用新字符串会比 string.concat 快得多。所以如果我们考虑性能,新的字符串会胜出。 也可以用有序枚举来数组转换?【参考方案4】:你可以用这个
string x = "ABCGH"
char[] charX = x.ToCharArray();
Array.Sort(charX);
这将对您的字符串进行排序。
【讨论】:
【参考方案5】:这是另一个。你可以使用SortedSet:
var letters = new SortedSet<char> ("ABCFE");
foreach (char c in letters) Console.Write (c); // ABCEF
【讨论】:
以上是关于有没有一种简单的方法可以按字母顺序对字符串中的字符进行排序的主要内容,如果未能解决你的问题,请参考以下文章