【问题标题】:Any reference that confirms that Array.Sort(charArray, StringComparer.Ordinal) works?任何确认 Array.Sort(charArray, StringComparer.Ordinal) 有效的参考资料?
【发布时间】: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


【解决方案1】:

OrderBy(chr => chr) 可以解决问题。 charIComparable 并且该可比较的定义比较了字符的整数/“序数”值。

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多