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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
Jun 05 Javascript
jquery获取一组checkbox的值(实例代码)
Nov 04 Javascript
js拼接html注意问题示例探讨
Jul 14 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
实例讲解JavaScript 计时事件
Jul 04 Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 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面试题集锦
2012/03/08 PHP
PHP的几个常用加密函数
2016/02/03 PHP
javascript中创建对象的几种方法总结
2013/11/01 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
Angular排序实例详解
2017/06/28 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Python中的Cookie模块如何使用
2020/06/04 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
应届生保险求职信
2013/11/11 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
捐助感谢信
2015/01/22 职场文书
公证处委托书
2015/01/28 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
python tqdm用法及实例详解
2021/06/16 Python
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript