在js里面字符串里如果用length属性的话1个汉字的长度是1吧
但是现在我想把数据输入到数据库里,我就想按按1个汉字的长度为2计算.
我想了个办法:js的正则表达式里的[u4e00-u9fa5]是所有汉字的集合吧.
下面我用一个函数将字符串里面每个汉字全部用英文"aa"代替.
这样我就能按每个汉字2个字符长度计算了.
但是结果恰好相反.输出的长度按每个英文字母长度为2计算- -!
想破脑袋也想不出为什么..
有空的帮我看看...
代码如下
function getStringLength(str) {
return str.replace(/[u4e00-u9fa5]/g, "aa").length;
}function checkUserName() {
var strLength = getStringLength("你好啊");
alert(strLength); //输出结果是3
//如果把"你好啊"改成英文,如"abc".输出结果就是6了.问题就出在这里
//不明白为什么英文字母的长度变成2了,刚好和我所要的相反. ……
}
}
但是现在我想把数据输入到数据库里,我就想按按1个汉字的长度为2计算.
我想了个办法:js的正则表达式里的[u4e00-u9fa5]是所有汉字的集合吧.
下面我用一个函数将字符串里面每个汉字全部用英文"aa"代替.
这样我就能按每个汉字2个字符长度计算了.
但是结果恰好相反.输出的长度按每个英文字母长度为2计算- -!
想破脑袋也想不出为什么..
有空的帮我看看...
代码如下
function getStringLength(str) {
return str.replace(/[u4e00-u9fa5]/g, "aa").length;
}function checkUserName() {
var strLength = getStringLength("你好啊");
alert(strLength); //输出结果是3
//如果把"你好啊"改成英文,如"abc".输出结果就是6了.问题就出在这里
//不明白为什么英文字母的长度变成2了,刚好和我所要的相反. ……
}
}
中间那句是alert(strLength) //输出结果是3
[u4e00-u9fa5] 改为==> [\u4E00-\u9FA5]
<script type="text/javascript">
function test(name) {
var len=name.replace('[\u4E00-\u9FA5]/g' ,"aa").length;
window.alert(len);
}
</script>
replace(/[\u4E00-\u6FA5]/g,"aa").length;