汉字数组排序及如何检测汉字

起因

        最近接触了一道有意思的题目,就是单击表格的表头,根据表头的那一栏进行排序。恰好有一栏的数据全部是中文汉字,如果仅仅对于汉字数组使用默认的sort排序,那么是针对汉字的unicode值进行比较排序,结果肯定与我们习惯的根据汉字的拼音排序大不相同。但是对于一个简单易用的程序而言,没有必要写个复杂的算法来将汉字转化为拼音,然后在进行ascII码值比较,代价有些大,幸好,js中有一个函数可以基本解决我们的问题,那就是localCompare函数。

localCompare()

        localCompare函数在W3C规范上是这样定义的:

用本地特定的顺序来比较两个字符串。localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

可以这样使用:

        str.localCompare(s);

返回-1,则str<s;返回0,则str==s;返回1,则str>s。

这样,针对汉字数组,我们就很容易来实现本地化比较。

       Chs.sort(function(a,b){
                    return a.localeCompare(b);
                });

监测汉字

          由于汉字在当前的系统中都是unicode编码,因此可以使用unicode码值来判断是否是汉字。汉字在unicode的范围是\u4E00-\u9FFF,因此可以使用正则来判断。

function CheckChinese(obj,val){     
  var reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
  if(reg.test(val))
    return true;
        else
    return false;
  }
posted @ 2015-03-25 11:36  royalrover  阅读(736)  评论(0编辑  收藏  举报