JS截取全半角字符串

全角半角字符混合输入的处理
问题1:输入长度的验证,例如输入内容在数据库中是40字节,所以输入长度不能超过40字节;而JavaScript中的String.length获得的是字符个数。
解决方法:通常全角字符为2字节,而半角字符为1字节;这样String.length获得的长度相当于将全角字符作为1字节处理,所以再加上全角字符的个数就是字节数。考虑到escape()函数处理的字符串中,全角字符都转换成%uXXXX的Unicode形式,可以由此统计出字符串中的全角字符个数。
下面的JavaScript代码扩展了String对象,用来获取字符串的字节数

String.prototype.getBytesLength = function () {

return this.length + (escape(this).split("%u").length - 1);

};


问题2:由于显示空间有限,要求显示内容按指定长度(字节数)截取,这里有全角字符的前一个字节在指定长度范围里的问题。
解决方法:从字符串后端开始,逐个删除字符,直到字符串字节数<=指定长度字节数。
下面的JavaScript代码扩展了String对象,实现了上面的截取方法


String.prototype.removeCharAt = function (index) {

var retStr = this;

if (index <= this.length) {

if (index === 0) {

retStr = this.substring(1);

} else {

if (index == this.length - 1) {

retStr = this.substring(0, this.length - 1);

} else {

retStr = this.substring(0, index) + this.substring(index + 1);

}

}

}

return retStr;

};



String.prototype.intercept = function (length) {

var s = this;

var len = s.getBytesLength();

while (len > length) {

s = s.removeCharAt(s.length - 1);

len = s.getBytesLength();

}

return s;

};
以上文章转至nelson_tu的文章【实用技巧Web篇(4)】

你可能感兴趣的:(JS截取全半角字符串)