在使用JavaScript中,我们常常知道比较两个英文字符串是根据字符本身的ASCII码的大小,从左往右进行比较(很多教程上都这么说)。但是对于这样一种说法我认为不合适,毕竟字符串中不仅有英文,而且有中文,对于中文的比较也可以的,但是ASCII码却不能表示中文。
因此,我想JavaScript的字符串比较应该换成另一种说法,那就是按照字符的Unicode码的大小从左至右进行比较。当然为何是Unicode码而不是其它的编码,我想这是跟我们页面的编码有关吧,但是到底是不是这样,我也没有查到相关的信息,如果你有这方面的资料,请告知于我,不胜感激。
证明我上面所说的一个测试程序如下:页面编码utf-8
<html>
<body>
<script type="text/javascript">
var str1="Apple";
var str2="Banana";
document.write(str1>str2);
document.write("<br />");
/*
执行结果为:FALSE,因为JavaScript中字符串的比较是按照字符的ASCII码,从左至右进行比较的。
但是对于中文比较呢?
由于中文不能使用ASCII码进行表示,但是却可以使用Unicode码表示,那么是否在进行中文字符串比较时
是按照字符的Unicode值的大小进行比较的呢?
如果真是这样的话,那么是否意味着所有的中文字符都比英文字符都大呢?
*/
/*中文字符比英文字符要大*/
var str3="中国";
var str4="ZZ";
document.write(str3>str4);
document.write("<br />");
/*执行结果为:true*/
var str5="中国";
var str6="人民";
/*显示str5中第一个字符的Unicode值*/
document.write(str5.charCodeAt(0));
document.write("<br />");
/*显示str6中第一个字符的Unicode值*/
document.write(str6.charCodeAt(0));
document.write("<br />");
/*显示比较的结果*/
document.write(str5>str6);
document.write("<br />");
</script>
</body>
</html>
执行结果如下:
false true 20013 20154 false
从中我们可以得到这样的一个规律:所有的中文字符都比英文字符要大!
相关文章:
Comments
Leave a comment Trackback