最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js處理包含中文的字符串實(shí)例

 更新時(shí)間:2017年10月11日 08:48:12   作者:Dantis·Deng  
下面小編就為大家?guī)硪黄猨s處理包含中文的字符串實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

場(chǎng)景:

js中String類型自帶的屬性length獲取的是字符串的字符數(shù)目,但是前端經(jīng)常會(huì)需要限制字符串的顯示長(zhǎng)度,一個(gè)中文字符又大概占兩個(gè)英文小寫字符的顯示位置,所以中英文混合的情況下用length值來判斷顯示長(zhǎng)度往往并不正確。

常規(guī)的解決辦法是遍歷字符串,中文字符計(jì)長(zhǎng)度2,非中文字符計(jì)長(zhǎng)度1,通過新計(jì)算出來長(zhǎng)度總和來限制字符串的顯示長(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編碼范圍不同來判斷的,中文占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ù)脑?,代碼不用限制太嚴(yán)謹(jǐn)?shù)姆秶?,畢竟你不知道用?測(cè)試)會(huì)輸哪些奇怪的東西。

以上這篇js處理包含中文的字符串實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

密山市| 商水县| 温宿县| 泗水县| 西乌珠穆沁旗| 城口县| 峡江县| 新建县| 乌兰浩特市| 虞城县| 凤翔县| 海淀区| 金溪县| 陆河县| 泸州市| 晋州市| 江城| 隆昌县| 汉中市| 米林县| 汉阴县| 娄底市| 连江县| 赤峰市| 玛曲县| 奉节县| 鄂尔多斯市| 长泰县| 临西县| 囊谦县| 天门市| 楚雄市| 巨野县| 曲阳县| 琼中| 桦川县| 莎车县| 海盐县| 廉江市| 道孚县| 楚雄市|