【发布时间】:2016-02-07 20:49:19
【问题描述】:
我想根据 Unicode 表中的序号位置(代码点)对字符数组进行排序。
我看到以下代码有效:
char[] charArray = new[] { 'h', 'e', 'l', 'l', 'o' };
Array.Sort(charArray, StringComparer.Ordinal);
但它看起来有点奇怪。首先是因为这两个参数都是非泛型的,其次,这里我使用了一个StringComparer来比较字符。
这保证有效吗?有参考吗?
【问题讨论】:
-
StringComparer在给定的示例中只是卸载与IComparable.CompareTo(source) 的比较。您也可以使用默认比较器。 -
@PetSerAl 哇,设计糟糕的 API。如果使用非字符串调用 StringComparer 应该失败。
-
所以我想答案是:这行得通,但不要那样做。
-
好的,但是,根据它们的序数(Unicode 代码点编号)对字符数组进行排序的正确方法是什么?
.OrderBy(chr => chr)?Array.Sort(charArray)?
标签: c# stringcomparer