js substr支持中文截取函数代码(中文是双字节)

(编辑:jimmy 日期: 2024/10/10 浏览:2)

复制代码 代码如下:
<script language="JavaScript">
//得到字符总数
function getChars(str) {
 var i = 0;
 var c = 0.0;
 var unicode = 0;
 var len = 0;
 if (str == null || str == "") {
  return 0;
 }
 len = str.length;
 for(i = 0; i < len; i++) {
   unicode = str.charCodeAt(i);
  if (unicode < 127) { //判断是单字符还是双字符
   c += 1;
  } else {  //chinese
   c += 2;
  }
 }
 return c;
}
function sb_strlen(str) {
    return getChars(str);
}
//截取字符
function sb_substr(str, startp, endp) {
    var i=0; c = 0; unicode=0; rstr = '';
    var len = str.length;
    var sblen = sb_strlen(str);
    if (startp < 0) {
        startp = sblen + startp;
    }
    if (endp < 1) {
        endp = sblen + endp;// - ((str.charCodeAt(len-1) < 127) ? 1 : 2);
    }
    // 寻找起点
    for(i = 0; i < len; i++) {
        if (c >= startp) {
            break;
        }
     var unicode = str.charCodeAt(i);
  if (unicode < 127) {
   c += 1;
  } else {
   c += 2;
  }
 }
 // 开始取
 for(i = i; i < len; i++) {
     var unicode = str.charCodeAt(i);
  if (unicode < 127) {
   c += 1;
  } else {
   c += 2;
  }
  rstr += str.charAt(i);
  if (c >= endp) {
      break;
  }
 }
 return rstr;
}
//调用示例:
function getShortFileName(filename) {
    short_filename = filename;
    if (sb_strlen(short_filename) > 61) {
        short_filename = sb_substr(short_filename, 0, 36) + ' ... ' + sb_substr(short_filename, -20);
    }
    return short_filename;
}
var chara = 'ni你2好1啊!'
js_self = chara.substr(4);
test = sb_substr(chara,4);
alert("js_self:"+js_self+"ext:"+test);
</script>

复制代码 代码如下:
function mb_strlen(str) {
 var len = 0;
 for(var i = 0; i < str.length; i++) {
  len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1;
 }
 return len;
}


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

一句话新闻

高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。