js--小demo--字串長度判斷,超出進行自動擷取(支援中文)
阿新 • • 發佈:2019-01-25
// 若真是長度大於10,也就是中文5個
if (GetLength(c.label) > 10) {
var label = cutstr(c.label, 10);
$item.find('.text').text(label);
}else {
$item.find('.text').text(c.label);
}
var GetLength = function (str) {
///<summary>獲得字串實際長度,中文2,英文1</summary>
///<param name="str">要獲得長度的字串</param>
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) realLength += 1;
else realLength += 2;
}
return realLength;
};
/**
* js擷取字串,中英文都能用
* @param str:需要擷取的字串
* @param len: 需要擷取的長度
*/
function cutstr(str, len) {
var str_length = 0;
var str_len = 0;
str_cut = new String();
str_len = str.length;
for (var i = 0; i < str_len; i++) {
a = str.charAt(i);
str_length++;
if (escape(a).length > 4) {
//中文字元的長度經編碼之後大於4
str_length++;
}
str_cut = str_cut.concat(a);
if (str_length >= len) {
str_cut = str_cut.concat("...");
return str_cut;
}
}
//如果給定字串小於指定長度,則返回源字串;
if (str_length < len) {
return str;
}
}