【问题标题】:c# case sensitive ASCII sort?c#区分大小写的ASCII排序?
【发布时间】:2011-02-06 14:54:55
【问题描述】:

我需要对一个字符串数组进行排序,它必须按 ascii 排序。

如果使用 Array.Sort(myArray),它将不起作用。

例如: myArray 是 ("aAzxxxx","aabxxxx") 如果使用 Array.Sort(myArray) 结果将是

  1. aabxxxx
  2. aAzxxxx

但是如果ascii排序,因为A

  1. aAzxxxx
  2. aabxxxx

这是我需要的结果。关于如何对字符串数组进行 ASCII 排序的任何想法?

谢谢

【问题讨论】:

    标签: c# sorting ascii


    【解决方案1】:

    如果我对你的理解正确,你想进行序数比较。

    Array.Sort(myArray, StringComparer.Ordinal);
    

    【讨论】:

      【解决方案2】:

      如果您想要按字符代码进行词法排序,您可以提供StringComparer.Ordinal 作为Array.Sort 的比较器。

      Array.Sort(myArray,StringComparer.Ordinal);
      

      Ordinal 属性返回的 StringComparer 执行与语言无关的简单字节比较。这在比较以编程方式生成的字符串或比较区分大小写的资源(如密码)时最为合适。

      StringComparer class 包含几个不同的比较器,您可以根据需要选择哪种文化或区分大小写。

      【讨论】:

        【解决方案3】:

        使用Sort 的重载,它需要一个合适的IComparer<T>

        Array.Sort(myArray, StringComparer.InvariantCulture);
        

        这种排序区分大小写

        如果您正在寻找按 ASCII 值进行排序,请使用 StringComparer.Ordinal:

        Array.Sort(myArray, StringComparer.Ordinal);
        

        【讨论】:

        • 使用 StringComparer.InvariantCulture 将导致与 op 已经获得的顺序相同。要获得 op 期望的结果 StringComparer.Ordinal 是必需的。
        猜你喜欢
        • 2018-03-09
        • 2019-01-31
        • 2020-09-13
        • 2012-06-22
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多