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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
在vue中通过axios异步使用echarts的方法
Jan 13 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
详解vue 命名视图
Aug 14 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
Vue.js实现立体计算器
Feb 22 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
两种php调用Java对象的方法
2006/10/09 PHP
开发大型 PHP 项目的方法
2007/01/02 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
8个PHP数组面试题
2015/06/23 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
Django处理文件上传File Uploads的实例
2018/05/28 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python字典与json转换的方法总结
2020/12/28 Python
高性能装备提升营地:Kammok
2019/02/27 全球购物
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android