【js】字符串超長用省略號處理(中英文一起處理)

首先先說一個方法,就是有中文的時候,計算真實的長度


function getRealLen( str ) {
    return str.replace(/[^\x00-\xff]/g, 'aa').length; //這個把所有雙字節的都給匹配進去了
}

原理是利用正則把中文變成"aa"兩個字符串,然後計算長度

 

然後接下來是重點

/* * 
 用途:js中字符串超長作固定長度加省略號(...)處理
 參數說明:
    str:需要進行處理的字符串,可含漢字
    len:需要顯示多少個漢字,兩個英文字母相當於一個漢字
 */
function beautySub(str, len) {
    var reg = /[\u4e00-\u9fa5]/g,slice = str.substring(0, len),
        cCharNum = (~~(slice.match(reg) && slice.match(reg).length)),
        realen = slice.length*2 - cCharNum-1;
    return str.substr(0, realen) + (realen < str.length ? "..." : "");
}

slice = str.substring(0, len):這裏是爲了先減少字符,達到優化

 realen = slice.length*2 - cCharNum-1:這裏減1是爲了處理萬一超過字符串,不顯示多一個不是漢字的字符,

然後最後就是截取要求的字符,後面加上省略號(“...”)

 

測試

console.log(beautySub("12程序猿g共同方",5));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章