首页 新闻 赞助 找找看

关于string.compare方法的一点疑问?

0
悬赏园豆:50 [已解决问题] 解决于 2012-03-13 11:40

一个比较奇怪的问题,我的代码如下:

static void Main(string[] args)
{
Console.WriteLine(string.Compare("-", "a"));//output -1
Console.WriteLine(string.Compare("-d", "a"));//output 1
Console.Read();
}

请高手指点为什么会这样?

我在MSDN看到一些信息,主要是说与特定区域性设置有关,连字符"-"占的比重很小,但讲的不是太清楚:http://msdn.microsoft.com/en-US/library/system.globalization.compareoptions%28v=vs.80%29.aspx

artwl的主页 artwl | 专家六级 | 园豆:16736
提问于:2012-03-13 10:04
< >
分享
最佳答案
0

所有string的比较方法都跟当前的CultureInfo相关的,具体的非常细节的规则我也不是很清楚,我把我知道的举个例子。假设我们有这么些字符用来排序(互相比较): a    -a    .a    b   -b

第一步:找准大方向。这一步里一些看起来是连接字符的(比如 "-"  ".")被忽略了,因此上面的几个其实是a和b的排序

第二步:忽略连接字符后按照byte值比较,相当于你传了StringComparison.Ordinal的效果。因此-a  .a(本质是a系列)都会排在b系列的前面(因为a在b前面)

第三步:系列内部比较。a   -a    .a 都是a系列, b   -b都是b系列,他们内部也有比较规则。这里的规则我就不太清楚了。

收获园豆:50
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-03-13 10:41

嗯,这里MSDN也没有说清楚

artwl | 园豆:16736 (专家六级) | 2012-03-13 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册