js中计算中文长度方法
/**
* 该方法用于截取字符串,根据字符和汉语的占位符有对应不同的处理
*
* eg: var titleValue = '1112322';
var showValue = oleSubstring(titleValue, 4);
if (titleValue == showValue) {
titleValue = '';
}
* @param titleValue 被截取的字符串
* @param splitLength 需要截取的长度
* @returns 截取后的字符串
*/
function oleSubstring(titleValue, splitLength) {
var str_length = 0;
var showValue = new String();
var titleValueLength = titleValue.length;
for ( var i = 0; i < titleValueLength; i++) {
var charValue = titleValue.charAt(i);
str_length++;
if (escape(charValue).length > 4) {
// 中文字符的长度经编码之后大于4
str_length++;
}
if (str_length > splitLength) {
break;
}
showValue = showValue.concat(charValue);
}
if (str_length > splitLength) {
showValue = showValue.concat("...");
}
return showValue;
}
由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。
- function getRealLen( str ) {
- return str.replace(/[^\x00-\xff]/g, '__').length; //这个把所有双字节的都给匹配进去了
- }
附赠另一小则技巧:
有时候为了美观,不影响布局和界面,会以一些文案进行截字,但是中文的宽度和英文的宽度不一样,如果按照英文标准来截中文的,或者按中文标准截英文的,显然会忽长忽短,特别是昵称这类容易既有中文又有英文的东西,同样我们可以用上面的思路
- function beautySub( str, len) {
- var reg = /[\u4e00-\u9fa5]/g, //专业匹配中文
- slice = str.substring(0,len),
- realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
- return slice.substring(0, realen ? realen : 1);
- }
这里我们认为一个中文字符是两个英文字符的宽度,如果你是完美主义者,应该想到j和w,m的宽度是不一样的,w和m以及大写的部分字母和中文的宽度是一致的,这个函数的正则还有相当大的改进空间,同时也可以指定截字的起始位置。
function beautySub( str, len) {
var reg = /[\u4e00-\u9fa5]/g, //专业匹配中文
slice = str.substring(0,len),
/**其实是一种利用符号进行的类型转换,转换成数字类型
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0
~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1
整数的操作
JavaScript中是没有整型概念的,但利用好位操作符可以轻松处理,同时获得效率上的提升。
|0和~~是很好的一个例子,使用这两者可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快。在处理像素及动画位移等效果的时候会很有用。性能比较见此。
var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3
顺便说句,!!将一个值方便快速转化为布尔值 !!window===true 。
*/
realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
return slice.substring(0, realen ? realen : 1);
}
js中计算中文长度方法相关推荐
- 切割字符串长度php,C++_C语言中计算字符串长度与分割字符串的方法,C语言strlen()函数:返回字符串 - phpStudy...
C语言中计算字符串长度与分割字符串的方法 C语言strlen()函数:返回字符串的长度头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int str ...
- Shell脚本中计算字符串长度的5种方法
这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下 有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前S ...
- js中的字符长度问题
今天遇到一个小问题,使用UTF-8这种Unicode编码存储格式时,用js中的字符串的length属性获取输入框中输入的字符长度时,输入中文也是按一个字符算,刚才查了下资料,原来在JS中字符串的长度不 ...
- 在python中使用中文_Python中使用中文的方法
python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...
- JS中所有遍历的方法
JS中所有遍历的方法 1.for for(let i=0;i<len;i++){//do something} 2.forEach forEach 循环不支持return实例:let arr = ...
- vue 懒人_Vue.js 中的实用工具方法【推荐】
收集日常开发中常用到的一些工具方法, 包含 vue 的公用过滤器.公用指令等 (PS: 懒人养成记) 公用自定义过滤器 import Vue from 'vue' import moment from ...
- js中数组常用的方法总结,包括ES6
原文地址:js中数组常用的方法总结,包括ES6 1.push() 后增 push()方法可以向数组后添加一个新的元素,并返回新数组的长度. 末尾添加,返回长度,改变原数组 var a = [1,2,3 ...
- JS中 new Date() 各方法的用法
JS中 new Date() 各方法的用法 1.new Date() 参数篇 a.返回类型为国标时间, b.无参数时可以直接返回输出时的时间, c.有参数时则返回对应时间的国标时间, d.日期中间的符 ...
- JS中数组使用的方法
JS中数组使用的方法 数组的介绍 JavaScript Array(数组):属于对象的一种 在句子中的作用就是使用一个单独的变量来存储一系列的值 数组的创建方法 1.字面量方式:var arr=[] ...
最新文章
- 【spring】在不联网的情况下查看xml的定义规则的方法
- 转载:PHP JSON_ENCODE 不编码中文汉字的方法
- 实现做出html的上标以及下标
- alertdialog android api 11,android – 设备api级别11的DialogFragments
- pip临时使用国内下载源,提高下载的速度
- java treelist 排序_一个很好的Java排序列表
- Unwind 栈回溯详解:libunwind
- 机器学习实战(十三)推荐系统(协同过滤 Collaborative Filtering)
- layer + ajax 弹出框
- 如何获取CSDN积分?
- Pycharm 主题背景色的配置
- 数学建模编程用c语言,C程序设计一百例--用c语言解决数学建模问题.doc
- 2021年特种设备气瓶充装(全国特种设备-P气瓶充装模拟考试题库一)安考星
- U盘量产后USB鼠标和键盘都无法使用,如何解决?
- 2022年卫浴行业报告:套系化+智能化拓宽边际,箭牌家居内资领航
- JAVA基础-java继承类实现
- windows10 背景加载不出来变成黑色背景
- 高性价比掌机Retroid Pocket 3:搭载展锐芯片T310,采用PowerVR GPU
- BOL简单分析(一)
- 嵌入页面拒绝了我们的连接请求