js中字符串超長作固定長度加省略號(...)處理

原文鏈接:https://blog.csdn.net/WuLex

由於JavaScriptunicode編碼的,所有的字符對於它來說一個就是一個,但是後臺程序不是,通常在後臺程序中一箇中文是佔兩個字節的,這就導致了前後端校驗長度不一致,這個問題可以通過正則來解決。

有時候爲了美觀,不影響佈局和界面,會以一些文案進行截字,但是中文的寬度和英文的寬度不一樣,如果按照英文標準來截中文的,或者按中文標準截英文的,顯然會忽長忽短,特別是暱稱這類容易既有中文又有英文的東西

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

這裏我們認爲一箇中文字符是兩個英文字符的寬度,如果你是完美主義者,應該想到jw,m的寬度是不一樣的,wm以及大寫的部分字母和中文的寬度是一致的,這個函數的正則還有相當大的改進空間,同時也可以指定截字的起始位置。

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