一聚教程网:一个值得你收藏的教程网站

热门教程

js返回字符串长度(中文算两个字节)

时间:2022-11-14 22:03:05 编辑:袖梨 来源:一聚教程网

在js中直接使用字符串的length属性,返回string中的中文是1,这在有些情况下不是我们想要的,下面提供一个方法,判断出中文,然后返回长度。

var getByteLen = function (str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (str[i].match(/[^x00-xff]/ig) != null){ //判断全角
//if (str[i].match(/[u4E00-u9FA5]/g) != null) //判断是否为中文
len += 2;
}else{
len += 1;
};
}
return len;
}
var str = '2ga哈哈245滴很3地h';
getByteLen(str); //18

代码中的两种判断方式都行, 其中 [^x00-xff] 表示ASCII 编码不在0-255的其他字符汉字或者全角字符之类的。

另外,判断是否中文的方法还有很多,大家可以自行搜索一下。
例1,判断输入是否为中文的函数

function ischinese(s){
var ret=true;
for(var i=0;i ret=ret && (s.charCodeAt(i)>=10000);
return ret;
}

例2,中文判断函数,允许生僻字用英文“*”代替。返回true表示是符合条件,返回false表示不符合。

function isChinese(str){
var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
badChar += "abcdefghijklmnopqrstuvwxyz";
badChar += "0123456789";
badChar += " "+" ";//半角与全角空格
badChar += "不包含*或.的英文符号
if(""==str){
return false;
} // www.111com.net
for(var i=0;i var c = str.charAt(i);//字符串str中的字符
if(badChar.indexOf(c) > -1){
return false;
}
}
return true;
}

例3,数字判断函数,返回true表示是全部数字,返回false表示不全部是数字

function isNumber(str){
if(""==str){
return false;
}
var reg = /D/;
return str.match(reg)==null;
}

热门栏目