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 相关文章推荐
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
javascript实现iframe框架延时加载的方法
Oct 30 Javascript
node.js中的path.dirname方法使用说明
Dec 09 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php查看当前Session的ID实例
2015/03/16 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
最短的IE判断代码
2011/03/13 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
webpack入门必知必会
2017/01/16 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
python如何去除字符串中不想要的字符
2020/07/05 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Python类装饰器实现方法详解
2018/12/21 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python装饰器使用实例详解
2019/12/14 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
印度服装购物网站:Limeroad
2018/09/26 全球购物
幼儿园中班上学期评语
2014/04/18 职场文书
班级出游活动计划书
2014/08/15 职场文书
检讨书格式
2015/01/23 职场文书
材料员岗位职责
2015/02/10 职场文书