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本身的局限性 别让javascript做太多事
Mar 23 Javascript
javascript cookies操作集合
Apr 12 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
May 22 Javascript
Vue Cli3 创建项目的方法步骤
Oct 15 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
OpenLayers3实现对地图的基本操作
Sep 28 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
图书管理程序(一)
2006/10/09 PHP
discuz目录文件资料汇总
2014/12/30 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
js常见表单应用技巧
2008/01/09 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
JavaScript window.location对象
2014/11/14 Javascript
javascript中的this详解
2014/12/08 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
《临死前的严监生》教学反思
2014/02/13 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
签约仪式策划方案
2014/06/02 职场文书
防灾减灾标语
2014/10/07 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
飞越疯人院观后感
2015/06/09 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库