js處理包含中文的字符串實例
場景:
js中String類型自帶的屬性length獲取的是字符串的字符數(shù)目,但是前端經(jīng)常會需要限制字符串的顯示長度,一個中文字符又大概占兩個英文小寫字符的顯示位置,所以中英文混合的情況下用length值來判斷顯示長度往往并不正確。
常規(guī)的解決辦法是遍歷字符串,中文字符計長度2,非中文字符計長度1,通過新計算出來長度總和來限制字符串的顯示長度??创a↓↓↓
var Tools ={ //是否包含中文 hasZh: function(str){ for(var i = 0;i < str.length; i++) { if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長度加2 return true; return false; } }, //重新計算長度,中文+2,英文+1 getlen: function(str){ var strlen = 0; for(var i = 0;i < str.length; i++) { if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長度加2 strlen += 2; else strlen++; } return strlen; }, //限制長度 limitlen: function(str, len){ var result = ""; var strlen = 0; for(var i = 0;i < str.length; i++) { if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長度加2 strlen += 2; else strlen++; result += str.substr(i,1); if(strlen >= len){ break; } } return result; } }
這種方法的原理是根據(jù)中英文的unicode編碼范圍不同來判斷的,中文占2個字節(jié),英文占1個字節(jié),所以中文的unicode編碼值肯定大于2^8-1=255。
上述方法可以更嚴(yán)謹(jǐn)一點(diǎn):就是考慮unicode編碼范圍,具體的范圍可以戳Unicode Table
PS: 漢字的unicode編碼范圍16進(jìn)制為4E00-9FA5,10進(jìn)制則為:19968-40869,即判斷中文的準(zhǔn)確表達(dá)式為:
str.charCodeAt(i)>=19968 && str.charCodeAt(i)<=40869
插一句不太嚴(yán)謹(jǐn)?shù)脑?,代碼不用限制太嚴(yán)謹(jǐn)?shù)姆秶吘鼓悴恢烙脩?測試)會輸哪些奇怪的東西。
以上這篇js處理包含中文的字符串實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JS中判斷某個字符串是否包含另一個字符串的五種方法
- js判斷一個字符串是否包含一個子串的方法
- JS獲取字符串實際長度(包含漢字)的簡單方法
- javascript 判斷字符串是否包含某字符串及indexOf使用示例
- js判斷數(shù)組是否包含某個字符串變量的實例
- 用javascript實現(xiàn)截取字符串包含中文處理的函數(shù)
- JS判斷字符串包含的方法
- js計算字符串長度包含的中文是utf8格式
- JS實現(xiàn)快速比較兩個字符串中包含有相同數(shù)字的方法
- JS不用正則驗證輸入的字符串是否為空(包含空格)的實現(xiàn)代碼
- JavaScript判斷一個字符串是否包含指定子字符串的方法
- JS中append字符串包含onclick無效傳遞參數(shù)失敗的解決方案
- JS給Array添加是否包含字符串的簡單方法
- javascript自動生成包含數(shù)字與字符的隨機(jī)字符串
- JavaScript獲取字符串實際長度(包含中英文)
- JavaScript面試中??嫉淖址僮鞣椒ù笕?包含ES6)
- JavaScript字符串包含問題
- js 判斷字符串中是否包含某個字符串的實現(xiàn)代碼
相關(guān)文章
js中數(shù)組解構(gòu)與對象解構(gòu)示例代碼
數(shù)組解構(gòu)是一種在 JavaScript 中從數(shù)組中提取值并將它們分配給變量的方式,在數(shù)組解構(gòu)中分為完全解構(gòu),不完全解構(gòu),解構(gòu)失敗以及解構(gòu)默認(rèn)值,這篇文章主要介紹了js中數(shù)組解構(gòu)與對象解構(gòu),需要的朋友可以參考下2023-09-09js防抖具體實現(xiàn)以及詳細(xì)原理步驟說明(附實例)
節(jié)流和防抖這里兩個詞可能對一些初入JavaScript的同學(xué)比較陌生,下面這篇文章主要給大家介紹了關(guān)于js防抖具體實現(xiàn)以及詳細(xì)原理步驟的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09boostrap模態(tài)框二次彈出清空原有內(nèi)容的方法
今天小編就為大家分享一篇boostrap模態(tài)框二次彈出清空原有內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08