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实现iframe动态调整高度的代码
Jan 06 Javascript
JavaScript Cookie 直接浏览网站分网址
Dec 08 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
javascript的事件触发器介绍的实现
Jun 05 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
js编写一个简单的产品放大效果代码
Jun 27 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
jQuery异步提交表单实例
May 30 jQuery
详解vue-cli官方脚手架配置
Jul 20 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
中文字符串截取的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编实现程动态图像的创建代码
2008/09/28 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python中的闭包函数
2018/02/09 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python实现数字的格式化输出
2020/08/01 Python
python 装饰器的基本使用
2021/01/13 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
土木工程专业大学毕业生求职信
2013/10/13 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
房产授权委托书范本
2014/09/22 职场文书
烟台的海导游词
2015/02/02 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
Python+Appium新手教程
2021/04/17 Python
关于Vue中的options选项
2022/03/22 Vue.js
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle