国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js處理包含中文的字符串實例

2024-05-06 16:40:15
字體:
來源:轉載
供稿:網友

場景:

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

常規的解決辦法是遍歷字符串,中文字符計長度2,非中文字符計長度1,通過新計算出來長度總和來限制字符串的顯示長度。看代碼↓↓↓

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; }}

這種方法的原理是根據中英文的unicode編碼范圍不同來判斷的,中文占2個字節,英文占1個字節,所以中文的unicode編碼值肯定大于2^8-1=255。

上述方法可以更嚴謹一點:就是考慮unicode編碼范圍,具體的范圍可以戳Unicode Table

PS: 漢字的unicode編碼范圍16進制為4E00-9FA5,10進制則為:19968-40869,即判斷中文的準確表達式為:

str.charCodeAt(i)>=19968 && str.charCodeAt(i)<=40869

插一句不太嚴謹的話,代碼不用限制太嚴謹的范圍,畢竟你不知道用戶(測試)會輸哪些奇怪的東西。

以上這篇js處理包含中文的字符串實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴桥县| 绥中县| 台前县| 中超| 博乐市| 佛学| 惠安县| 湘潭县| 墨竹工卡县| 百色市| 察哈| 繁昌县| 卢湾区| 盐城市| 永新县| 东山县| 天长市| 苏尼特右旗| 中牟县| 延吉市| 会昌县| 蓬溪县| 开鲁县| 蓬安县| 锦州市| 许昌市| 阳谷县| 永宁县| 柯坪县| 嘉善县| 朝阳市| 繁峙县| 朝阳县| 加查县| 桃园市| 秦安县| 广德县| 剑川县| 康平县| 监利县| 光泽县|