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 相关文章推荐
JavaScript 创建对象
Jul 17 Javascript
JavaScript 笔记二 Array和Date对象方法
May 22 Javascript
JS读取XML文件示例代码
Nov 15 Javascript
javascript模拟地球旋转效果代码实例
Dec 02 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
基于jQuery Ajax实现上传文件
Mar 24 Javascript
javascript创建对象的几种模式介绍
May 06 Javascript
聊一聊JS中this的指向问题
Jun 17 Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 Javascript
Vue实现移动端页面切换效果【推荐】
Nov 13 Javascript
简介JavaScript错误处理机制
Aug 04 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
深入了解php4(2)--重访过去
2006/10/09 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Django中的session用法详解
2020/03/09 Python
Python基于当前时间批量创建文件
2020/05/07 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
留学推荐信怎么写
2014/01/25 职场文书
高三生物教学反思
2014/01/25 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers