String.CompareTo 语法
public int CompareTo( string strB )
返回值
小于 0,实例小于参数 strB;
0,实例等于参数 strB;
大于 0,实例大于参数 strB,或者 strB 是 null 引用。
比较程序
并不是按字符串长度来比较的,而是:
比较两个字符串的第一个字符:相等则比较第二个,不相等则直接返回结果;
比较两个字符串的第二个字符:相等则比较第三个,不相等则直接返回结果;
比较两个字符串的第三个字符:相等则比较第四个,不相等则直接返回结果;
……
谁大谁小?
实例大还是 strB 大,这是受计算机区域设置影响的,对于我们的中国区域设置,默认为:
null<零长度字符串<0<1<2<...<9<a<b<c<...<z<...<阿<...<不<...<吃<...<一<...<衣<...<这<...
需要说明数字、字母也是拆开一个一个的比较的,比如:字符串 "200" 是小于 "3" 的,因为 "2" 小于 "3"。
string a = "阿"; string b = "不"; string c = "吃"; if (a.CompareTo(b) > 0) { Response.Write(a + ">" + b + "<br>"); } else if (a.CompareTo(b) < 0) { Response.Write(a + "<" + b + "<br>"); } if (b.CompareTo(c) > 0) { Response.Write(b + ">" + c + "<br>"); } else if (b.CompareTo(c) < 0) { Response.Write(b + "<" + c + "<br>"); }
结果为:
阿<不
不<吃
改一下区域设置
在“控制面板”中,打开“区域和语言选项”,在“区域选项”中单击“自定义”,在“排序”标签中选择“笔划”,一路确定。然后关闭 Visual Web Developer(假设我们是在 VWD 中进行的实验),再打开之,运行网站。
排序变成了:
阿>不
不<吃
因为这是按笔划来的(“不”在这里笔划最少),不再是按拼音来的。我们改的这个区域设置只影响了中文,没有影响到数字和字母等。