本站已搬家!

本站已搬家至https://blog.typeart.cc


歡迎舊雨新知指教!

計算含中英文字的字串長度

一般來說直接以str.length就可以直接取得
但字串中若有含中英文字,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

參考資料

留言