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 相关文章推荐
functional继承模式 摘自javascript:the good parts
Jun 20 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
extjs render 用法介绍
Sep 11 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
Javascript实现可旋转的圆圈实例代码
Aug 04 Javascript
谈一谈javascript中继承的多种方式
Feb 19 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
bootstrap modal+gridview实现弹出框效果
Aug 15 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
Python中的zip函数使用示例
2015/01/29 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
怎样声明一个匿名的内部类
2016/06/01 面试题
会计找工作求职信范文
2013/12/09 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
创业资金计划书
2014/02/06 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
辩护词范文大全
2015/05/21 职场文书
公诉意见书范文
2015/06/05 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
初中英语教学反思范文
2016/02/15 职场文书