佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 224|回复: 1

已验证 别人的js substr支持中文截取(中文是双字符)

[复制链接]
发表于 11-10-2019 11:20 AM | 显示全部楼层 |阅读模式
  1. //得到字符总数  
  2. function getChars(str) {  
  3.     var i = 0;  
  4.     var c = 0.0;  
  5.     var unicode = 0;  
  6.     var len = 0;  
  7.   
  8.     if (str == null || str == "") {  
  9.         return 0;  
  10.     }  
  11.     len = str.length;  
  12.     for(i = 0; i < len; i++) {  
  13.             unicode = str.charCodeAt(i);  
  14.         if (unicode < 127) { //判断是单字符还是双字符  
  15.             c += 1;  
  16.         } else {  //chinese  
  17.             c += 2;  
  18.         }  
  19.     }  
  20.     return c;  
  21. }  
  22.   
  23. function sb_strlen(str) {  
  24.     return getChars(str);  
  25. }  
  26. //截取字符  
  27. function sb_substr(str, startp, endp) {  
  28.     var i=0; c = 0; unicode=0; rstr = '';  
  29.     var len = str.length;  
  30.     var sblen = sb_strlen(str);  
  31.   
  32.     if (startp < 0) {  
  33.         startp = sblen + startp;  
  34.     }  
  35.   
  36.     if (endp < 1) {  
  37.         endp = sblen + endp;// - ((str.charCodeAt(len-1) < 127) ? 1 : 2);  
  38.     }  
  39.     // 寻找起点  
  40.     for(i = 0; i < len; i++) {  
  41.         if (c >= startp) {  
  42.             break;  
  43.         }  
  44.         var unicode = str.charCodeAt(i);  
  45.         if (unicode < 127) {  
  46.             c += 1;  
  47.         } else {  
  48.             c += 2;  
  49.         }  
  50.     }  
  51.   
  52.     // 开始取  
  53.     for(i = i; i < len; i++) {  
  54.         var unicode = str.charCodeAt(i);  
  55.         if (unicode < 127) {  
  56.             c += 1;  
  57.         } else {  
  58.             c += 2;  
  59.         }  
  60.         rstr += str.charAt(i);  
  61.   
  62.         if (c >= endp) {  
  63.             break;  
  64.         }  
  65.     }  
  66.   
  67.     return rstr;  
  68. }  
  69. //调用示例:  
  70. function getShortFileName(filename) {  
  71.     short_filename = filename;  
  72.     if (sb_strlen(short_filename) > 61) {  
  73.         short_filename = sb_substr(short_filename, 0, 36) + ' ... ' + sb_substr(short_filename, -20);  
  74.     }  
  75.     return short_filename;  
  76. }  
  77.   
  78. var chara = 'ni你2好1啊!'  
  79. js_self = chara.substr(4);  
  80. test = sb_substr(chara,4);  
  81. alert("js_self:"+js_self+"ext:"+test);  
  82.   
  83. function mb_strlen(str) {  
  84.     var len = 0;  
  85.     for(var i = 0; i < str.length; i++) {  
  86.         len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1;  
  87.     }  
  88.     return len;  
  89. }  
复制代码


来源
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 11-10-2019 11:25 AM | 显示全部楼层

  1. if( Zhi[(cld[sD].lMonth+11)%13] == sb_substr(cld[sD].cDay, 2, 4) ) {sObj.className = 'jiColor1';s = '月罗睺'.fontcolor('blue'); } //月罗睺 收ni
  2. if( sb_substr(cld[sD].cMonth, 2, 4) == sb_substr(cld[sD].cDay, 2, 4) ) {sObj.className = 'jiColor1';s = '正罗睺'.fontcolor('blue'); } //正罗睺 建ren

复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 10:08 PM , Processed in 0.057362 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表