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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
Feb 09 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
Aug 06 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
php str_pad 函数使用详解
2009/01/13 PHP
浅谈PHP中的
2016/04/23 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python如何进入交互模式
2020/07/06 Python
python中sys模块是做什么用的
2020/08/16 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
美术国培研修感言
2014/02/12 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
网络销售员岗位职责
2015/04/11 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
详解Java实现数据结构之并查集
2021/06/23 Java/Android
Python matplotlib绘制雷达图
2022/04/13 Python