【Javascript】JS统计中文字符个数的函数

统计文本中中文字符个数的函数,代码如下:

<script>
    // 统计汉字数,不包括标点符号
    function countChinese(str){
        var m=str.match(/[\u4e00-\u9fff\uf900-\ufaff]/g);
        return (!m?0:m.length);
    }
    // 统计非ASCII字符数 
    function countNonAlphabet(str){
        var m=str.match(/[^\x00-\x80]/g);
        return (!m?0:m.length);
    }
    var string="Make a test: 这X-rapido的博客—添加收藏吧!";
    alert(countChinese(string));
    alert(countNonAlphabet(string));
</script>

这里用到了正则表达式,不会的话学习一下《正则表达式30分钟入门教程》。如果希望统计其他字符的话,只需修改一下正则表达式中的Unicode字符编码,参考Unicode编码表。上面函数用到了ASCII统计,可以参考ASCII码对照表

网上找到另一种用String.split函数来统计中文字符的,发现效率稍差,可使用以下测试对比一下。

正则表达式法

<script>
    var n = 99999;
    var s = "";
    while(n--) s+="一a";
    function countChinese(str){
        var m=str.match(/[\u4e00-\u9fff\uf900-\ufaff]/g);
        return (!m?0:m.length);
    }
    var start = new Date();
    var m = (countChinese(s));
    var time = new Date() - start;
    alert("countChinese(s): " + m)
    alert("Time: " + time);
</script>

split函数法

<script>
    var n = 99999;
    var s = "";
    while(n--) s+="一a";
    function countChinese2(str){
        return str.split(/[\u4e00-\u9fff\uf900-\ufaff]/).length -1;
    }
    var start = new Date();
    var m = (countChinese2(s));
    var time = new Date() - start;
    alert("countChinese2(s): " + m)
    alert("Time 2: " + time);
</script>


赞(52) 打赏
未经允许不得转载:优客志 » 前端设计
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏