随笔 - 7, 文章 - 1, 评论 - 4, 引用 - 0
数据加载中……

c#里的string.compare 问题

    以前一直以为所有语言的字符串比较都是逐个字符比较,比较ASCII码或者UNICODE码值,例如string.compare("21sea","21SEA")= -1 ,原以为是s和S决定了字符串的比较值,在后面添加字符时,不会改变结果,即:string.compare("21sea22","21SEA21") 仍然等于-1,然而在c#中输出结果为1。
    原来在字符串的排序中是有第三个参数的,他决定了字符串的比较规则。在c#的字符串比较中对字母字符、非字母字符的数字或者一些符号赋予了不同的权重。在.NET Framework 中有三种排序方式,单词排序、字符串排序和序号排序。单词排序执行区分区域性的字符串比较。某些非字母数字字符可能被赋予了特殊权重。例如,连字符(“-”)的权重非常小,因此“coop”和“co-op”在排序列表中是紧挨着出现的。字符串排序与单词排序类似,只不过它没有特殊情况。因此,所有非字母数字符号会排在所有字母数字字符之前。而序号排序基于字符串中各元素的 Unicode 值对字符串进行比较。

posted on 2008-11-28 22:35 大志 阅读(1248) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理