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 相关文章推荐
学习YUI.Ext 第七天--关于View&amp;JSONView
Mar 10 Javascript
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
window.returnValue使用方法示例介绍
Jul 03 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
javascript文本模板用法实例
Jul 31 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
Feb 16 Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
tweenjs缓动算法的使用实例分析
Aug 26 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
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
大学军训感言1500字
2014/03/09 职场文书
服装店营销方案
2014/03/10 职场文书
公司担保书范文
2014/05/21 职场文书
十佳家长事迹材料
2014/08/26 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
拆迁委托协议书
2014/09/15 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
入党函调证明材料
2015/06/19 职场文书
简爱读书笔记
2015/06/26 职场文书
个人工作决心书
2015/09/22 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL