首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中文字符串比较大小疑点

2013-04-26 
C#中文字符串比较大小问题C#比较中文字符串时是按照什么比较呢?比较各个Unicode编码吗?和Java的字符串比较

C#中文字符串比较大小问题
C#比较中文字符串时是按照什么比较呢?比较各个Unicode编码吗?和Java的字符串比较有何不同呢?各位大神求指点啊! C# 中文字符串比较 Java 编码
[解决办法]
这个取决于你用什么样的比较方法(默认为当前的区域文化的比较方式)。
比如:


CultureInfo 拼音 = new CultureInfo(0x804);
CultureInfo 比划 = new CultureInfo(0x20804);

string s1 = "一";
string s2 = "啊";

int c0 = string.Compare(s1, s2, StringComparison.Ordinal);  // -1866
int c1 = string.Compare(s1, s2, 拼音, CompareOptions.None);  //  1
int c2 = string.Compare(s1, s2, 比划, CompareOptions.None);  // -1

可以看到,当采用拼音排序时,'一(yi)'比'啊(a)'大;
当采用笔画排序的时候,'一'比'啊'小;
而最快的比较就是直接哪Unicode内码比较,比如Ordinal下'一'比较小。
有趣的是,Ordinal比较直接给出了两个首字符的差距:'一'的内码为19968,'啊'的内码为21834,两者的区别正好是-1866。

热点排行