js處理包含中文的字符串實(shí)例
場(chǎng)景:
js中String類型自帶的屬性length獲取的是字符串的字符數(shù)目,但是前端經(jīng)常會(huì)需要限制字符串的顯示長(zhǎng)度,一個(gè)中文字符又大概占兩個(gè)英文小寫(xiě)字符的顯示位置,所以中英文混合的情況下用length值來(lái)判斷顯示長(zhǎng)度往往并不正確。
常規(guī)的解決辦法是遍歷字符串,中文字符計(jì)長(zhǎng)度2,非中文字符計(jì)長(zhǎng)度1,通過(guò)新計(jì)算出來(lái)長(zhǎng)度總和來(lái)限制字符串的顯示長(zhǎng)度??创a↓↓↓
var Tools ={
//是否包含中文
hasZh: function(str){
for(var i = 0;i < str.length; i++)
{
if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長(zhǎng)度加2
return true;
return false;
}
},
//重新計(jì)算長(zhǎng)度,中文+2,英文+1
getlen: function(str){
var strlen = 0;
for(var i = 0;i < str.length; i++)
{
if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長(zhǎng)度加2
strlen += 2;
else
strlen++;
}
return strlen;
},
//限制長(zhǎng)度
limitlen: function(str, len){
var result = "";
var strlen = 0;
for(var i = 0;i < str.length; i++)
{
if(str.charCodeAt(i) > 255) //如果是漢字,則字符串長(zhǎng)度加2
strlen += 2;
else
strlen++;
result += str.substr(i,1);
if(strlen >= len){
break;
}
}
return result;
}
}
這種方法的原理是根據(jù)中英文的unicode編碼范圍不同來(lái)判斷的,中文占2個(gè)字節(jié),英文占1個(gè)字節(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ù)脑挘a不用限制太嚴(yán)謹(jǐn)?shù)姆秶?,畢竟你不知道用?測(cè)試)會(huì)輸哪些奇怪的東西。
以上這篇js處理包含中文的字符串實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JS中判斷某個(gè)字符串是否包含另一個(gè)字符串的五種方法
- js判斷一個(gè)字符串是否包含一個(gè)子串的方法
- JS獲取字符串實(shí)際長(zhǎng)度(包含漢字)的簡(jiǎn)單方法
- javascript 判斷字符串是否包含某字符串及indexOf使用示例
- js判斷數(shù)組是否包含某個(gè)字符串變量的實(shí)例
- 用javascript實(shí)現(xiàn)截取字符串包含中文處理的函數(shù)
- JS判斷字符串包含的方法
- js計(jì)算字符串長(zhǎng)度包含的中文是utf8格式
- JS實(shí)現(xiàn)快速比較兩個(gè)字符串中包含有相同數(shù)字的方法
- JS不用正則驗(yàn)證輸入的字符串是否為空(包含空格)的實(shí)現(xiàn)代碼
- JavaScript判斷一個(gè)字符串是否包含指定子字符串的方法
- JS中append字符串包含onclick無(wú)效傳遞參數(shù)失敗的解決方案
- JS給Array添加是否包含字符串的簡(jiǎn)單方法
- javascript自動(dòng)生成包含數(shù)字與字符的隨機(jī)字符串
- JavaScript獲取字符串實(shí)際長(zhǎng)度(包含中英文)
- JavaScript面試中常考的字符串操作方法大全(包含ES6)
- JavaScript字符串包含問(wèn)題
- js 判斷字符串中是否包含某個(gè)字符串的實(shí)現(xiàn)代碼
相關(guān)文章
javascript 就地編輯實(shí)現(xiàn)代碼
最近正在看《javascript設(shè)計(jì)模式》,其中有一個(gè)'就地編輯'的示例,用來(lái)表現(xiàn)不同的繼承方式,看完之后想自己憑理解寫(xiě)一個(gè)類似的東西。2010-05-05
JavaScript中使用參數(shù)個(gè)數(shù)實(shí)現(xiàn)重載功能
這篇文章主要介紹了JavaScript中使用參數(shù)個(gè)數(shù)實(shí)現(xiàn)重載功能,需要的朋友可以參考下2017-09-09
Bootstrap 響應(yīng)式實(shí)用工具實(shí)例詳解
Bootstrap 提供了一些輔助類,以便更快地實(shí)現(xiàn)對(duì)移動(dòng)設(shè)備友好的開(kāi)發(fā)。這些可以通過(guò)媒體查詢結(jié)合大型、小型和中型設(shè)備,實(shí)現(xiàn)內(nèi)容對(duì)設(shè)備的顯示和隱藏。下面通過(guò)本文給大家分享Bootstrap 響應(yīng)式實(shí)用工具,一起看看吧2017-03-03
基于JS正則表達(dá)式實(shí)現(xiàn)模板數(shù)據(jù)動(dòng)態(tài)渲染(實(shí)現(xiàn)思路詳解)
這篇文章主要介紹了基于JS正則表達(dá)式實(shí)現(xiàn)模板數(shù)據(jù)動(dòng)態(tài)渲染 ,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
JS 有趣的eval優(yōu)化輸入驗(yàn)證實(shí)例代碼
這篇文章介紹了eval優(yōu)化輸入驗(yàn)證實(shí)例代碼,有需要的朋友可以參考一下2013-09-09

