统计文本中中文字符个数的函数,代码如下:
<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>未经允许请勿转载:程序喵 » 【Javascript】JS统计中文字符个数的函数
程序喵