JavaScript計算含中英文字的字串長度
比如
"中文abc".length //return 5. 我們期望他回傳7
"abcdefg".length //return 6.
因為中文字節等於2 bytes
.length 回傳的數值卻會把中文字當1個字來計算
導致後續如substring、計算長度等作業造成錯誤
解決方法很簡單,只要將中文字取代成2個英文字後再來計算長度,就會得到我們想要的數值!
直接註冊原型函式,語法如下:
String.prototype.len=function(){
return this.replace(/[^\x00-\xff]/g,"xx").length;
}
"中文abc".len(); // return 7
若不註冊,只想當一般function呼叫使用
function len(str){
return str.replace(/[^\x00-\xff]/g,"xx").length;
}
len("中文abc"); //return 7