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 07 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
Jan 07 Javascript
Vue和React组件之间的传值方式详解
Jan 31 Javascript
对layui中的onevent 和event的使用详解
Sep 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
js中reverse函数的用法详解
2013/12/26 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
python通过post提交数据的方法
2015/05/06 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
python Pillow图像处理方法汇总
2019/10/16 Python
python中_del_还原数据的方法
2020/12/09 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
高中考试作弊检讨书
2014/01/14 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
公司职员入党自传书
2015/06/26 职场文书
安全生产感想
2015/08/07 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python