2011-02-06 118 views
6

我需要排序字符串数组,它必须按ascii排序。c#区分大小写的ASCII排序?

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

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

  1. aabxxxx
  2. aAzxxxx

但如果ascii排序,因为A < a,(大写A是65,a是97,所以A < a) 结果将是

  1. aAzxxxx
  2. aabxxxx

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

THX

回答

13

如果我理解正确的,你要执行序号比较。

Array.Sort(myArray, StringComparer.Ordinal); 
1

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

Array.Sort(myArray, StringComparer.InvariantCulture); 

这类是区分大小写

如果由ASCII值寻找一个排序,使用StringComparer.Ordinal

Array.Sort(myArray, StringComparer.Ordinal); 
+1

使用StringComparer.InvariantCulture将导致与op已经获得相同的排序。为了得到结果,操作期望StringComparer.Ordinal是必需的。 – 2011-02-06 15:03:01

3

如果您想通过该炭代码词法排序,你可以提供StringComparer.Ordinal作为一个比较器对Array.Sort

Array.Sort(myArray,StringComparer.Ordinal); 

由序属性返回的StringComparer执行简单的字节比较是独立的语言。比较以编程方式生成的字符串或比较区分大小写的资源(如密码)时,这是最合适的。

StringComparer class包含几个不同的比较器,您可以从中选择哪个比较器,具体取决于您想要的文化或区分大小写。

相关问题