一個漢字的長度等于兩個英文字母的長度。
是以在限制字元串長度的時候,需要将兩者的類型轉換成一緻,處理方法如下:
/**
字元串截取
參數
str <string> 字元串
len <integer> 長度。
sufix <string> 字尾
傳回
<string>
*/
function subString(str, len, sufix) {
var r = /[^\x00-\xff]/g; //比對雙位元組字元(包括漢字在内),一個雙位元組字元長度計2
var m;
if (str.replace(r, '**').length > len) {
m = Math.floor(len / 2);
//做法:将字元串的每個字元轉化成雙位元組,然後判斷該字元串的長度(簡化操作:将字元串取一半,減少循環的次數)
for (var i = m, l = str.length; i < l; i++) {
if (str.substr(0, i).replace(r, '**').length >= len) {//截取從0到i的字元串,然後替換成雙位元組的字元
return str.substr(0, i) + sufix;
}
}
}
return str;
};
附屬:正則常用的用法
http://469957559.iteye.com/blog/1999623