js substr支持中文截取函数代码(中文是双字节)

 更新时间:2013年04月17日 19:02:14   转载 作者:  
js substr支持中文截取函数代码,中文是双字节,配有实例需要的朋友可以参考下

复制代码 代码如下:

<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;
}


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

相关文章

  • Javascript获取background属性中url的值

    Javascript获取background属性中url的值

    Javascript获取CSS中属性值方法有很多,今天工作的时候遇到了一个问题是需要利用Javascript获取css中background-img属性url的值,通过查阅网站的资料找到了解决方法,现在将方法分享给大家,有需要的朋友们们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • JavaScript数组去重的几种方法

    JavaScript数组去重的几种方法

    这篇文章主要给大家介绍了关于JavaScript数组去重的几种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 14 个折磨人的 JavaScript 面试题

    14 个折磨人的 JavaScript 面试题

    这篇文章主要为大家详细介绍了14 个折磨人的 JavaScript 面试题,希望对大家有所帮助,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 详解小程序input框失焦事件在提交事件前的处理

    详解小程序input框失焦事件在提交事件前的处理

    这篇文章主要介绍了详解小程序input框失焦事件在提交事件前的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 如何基于原生javaScript生成带图片的二维码

    如何基于原生javaScript生成带图片的二维码

    这篇文章主要介绍了如何基于原生javaScript生成带图片的二维码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 一个js的tab切换效果代码[代码分离]

    一个js的tab切换效果代码[代码分离]

    看了此文(YUI实现的Tab 切换),有感而发,写了一个tab切换的函数,做学习之用。原生js实现,因为框架不好玩。
    2010-04-04
  • javascript中字符串拼接详解

    javascript中字符串拼接详解

    字符串拼接是所有程序设计语言都需要的操作。当拼接结果较长时,如何保证效率就成为一个很重要的问题。本文介绍的是Javascript中的字符串拼接,希望对你有帮助,一起来看。
    2014-09-09
  • ES6数组的扩展详解

    ES6数组的扩展详解

    这篇文章主要介绍了ES6数组的扩展,结合实例形式详细对比分析了ES6数组的新增方法与相关使用技巧,需要的朋友可以参考下
    2017-04-04
  • Javascript中对象继承的实现小例

    Javascript中对象继承的实现小例

    这篇文章主要介绍了Javascript中对象继承的实现,需要的朋友可以参考下
    2014-05-05
  • JavaScript中使用stopPropagation函数停止事件传播例子

    JavaScript中使用stopPropagation函数停止事件传播例子

    这篇文章主要介绍了JavaScript中使用stopPropagation函数停止事件传播例子,即阻止事件冒泡的一个方法,需要的朋友可以参考下
    2014-08-08

最新评论