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


Posted in Javascript onApril 17, 2013
<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;
}
Javascript 相关文章推荐
拖拉表格的JS函数
Nov 20 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
关于JS管理作用域的问题
Apr 10 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
javascript二维数组转置实例
Jan 22 Javascript
jqGrid用法汇总(全经典)
Jun 28 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
Jan 03 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 Javascript
中文字符串截取的js函数代码
Apr 17 #Javascript
解决IE6的PNG透明JS插件使用介绍
Apr 17 #Javascript
Web跨浏览器进程通信(Web跨域)
Apr 17 #Javascript
js读写(删除)Cookie实例详解
Apr 17 #Javascript
基于dom编程中 动态创建与删除元素的使用
Apr 17 #Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 #Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
Apr 17 #Javascript
You might like
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
javascript静态的url如何传递
2007/05/03 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
js数组去重的hash方法
2016/12/22 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
快速了解Python相对导入
2018/01/12 Python
Sanic框架应用部署方法详解
2018/07/18 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Jupyter加载文件的实现方法
2020/04/14 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
关于责任的演讲稿
2014/05/20 职场文书
家具商场的活动方案
2014/08/16 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
单位未婚证明范本
2014/11/25 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
结婚典礼致辞
2015/07/28 职场文书
Python绘制分类图的方法
2021/04/20 Python
Docker官方工具docker-registry案例演示
2022/04/13 Servers