js 中文字串的友好擷取
阿新 • • 發佈:2019-02-02
在顯示字串的時候,避免字串過長往往會對字串進行擷取操作,通常會用到js 的 substr 或者 substring方法, 以及 字串的length屬性
對於非中文的字串處理是很簡單的,但是中文字元的 length 屬性值 是1 而不是 2 ,所以處理就不是很友好了。
例如 你有一個字串 1234567890 和 一二三四五六七八九零,
你只想顯示五位長度,往往會這樣操作 str = str.substr(0, 5);
但是 12345 與 一二三四五 所佔的寬度是不同的,因為中文往往佔2位元組, 為了顯示效果更好,
故封裝下面的js, 他會辨別中文字元的 length 為2
$.String.Substr = function (str, n) {//字串擷取 包含對中文處理 if (str.replace(/[\u4e00-\u9fa5]/g, "**").length <= n) { return str; } else { var len = 0; var tmpStr = ""; for (var i = 0; i < str.length; i++) {//遍歷字串 if (/[\u4e00-\u9fa5]/.test(str[i])) {//中文 長度為兩位元組 len += 2; } else { len += 1; } if (len > n) { break; } else { tmpStr += str[i]; } } return tmpStr + " ..."; } };