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格式化时间和js格式化时间戳示例
Feb 10 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
vue-hook-form使用详解
Apr 07 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
Mar 09 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
微信小程序获取当前位置和城市名
Nov 13 Javascript
Javascript作用域和作用域链原理解析
Mar 03 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php socket客户端及服务器端应用实例
2014/07/04 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
利用Python如何生成便签图片详解
2018/07/09 Python
最新pycharm安装教程
2020/11/18 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
大专自我鉴定范文
2013/10/01 职场文书
学子宴答谢词
2014/01/25 职场文书
小学作文评语大全
2014/04/21 职场文书
工会趣味活动方案
2014/08/18 职场文书
护士工作失误检讨书
2014/09/14 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
一文搞懂Java中的注解和反射
2022/06/21 Java/Android