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 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
Element Card 卡片的具体使用
Jul 26 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读取文件内容到数组的方法
2015/03/16 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
js生成随机数之random函数随机示例
2013/12/20 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
Python新手学习装饰器
2020/06/04 Python
设计师个人求职信范文
2014/02/02 职场文书
企业党员公开承诺书
2014/03/26 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
车辆工程专业求职信
2014/06/14 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
关于做家务的心得体会
2016/01/23 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫