javascript 中英文字符长度和截断处理
因:javascript中的String类自带的length属性 和 substr()方法虽然能判断和截取出字符个数,但是对字节个数却没有处理的方法(众所周知,中文字符占两个字节,英文只占一个)
果:中英文字符在页面上的占位空间存在差异。中文的web开发人员不能一刀切,对中英文都截取同样长度的字符数。
网上大致有两种方法处理中英文字符。一种是把中文字符escape了,然后计算字节长度。一种是用正则表达式把中文字符转换2个字节的符号,然后计算长度
推荐第二种方法,简单明了,速度快,效率高。
按照第二种方法,对javascript 的 String类型做以下扩展:
一.String.len() 方法,计算字符串字节个数:
String.prototype.len=function() {
return this.replace(/[^\x00-\xff]/g,"rr").length;
}
二.String.sub(endindex) 方法,从0开始截取endindex长度的字节数。
String.prototype.sub = function(n)
{
var r = /[^\x00-\xff]/g;
if(this.replace(r, "mm").length <= n) return this;
// n = n - 3;
var m = Math.floor(n/2);
for(var i=m; i<this.length; i++) {
if(this.substr(0, i).replace(r, "mm").length>=n) {
return this.substr(0, i) ; }
} return this;
};
三.根据unicode编码范围
String.prototype.gblen = function() {
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len ++;
}
}
return len;
}
参考:http://blog.csdn.net/testcs_dn/article/details/21412303
charCodeAt()
定义和用法
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。
字符编码:http://www.cnblogs.com/darr/p/5355178.html
javascript 中英文字符长度和截断处理的更多相关文章
- javascript 返回字符长度,中文为两个字节,英文为一个字节
//正则:用于区分中文为两个字节function getLength(str){ return String(str).replace(/[^\x00-\xff]/g,'aa').length; ...
- JS 判断中英文字符长度
function strlen(str) { var len = 0; for (var i = 0; i < str.length; i++) { ...
- 【代码笔记】iOS-判断中英文混合的字符长度的两种方法
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- JavaScript判断字符串的字符长度(中文占两个字符)
判断方法 //判断字符串中的字符 中文算两个字符 function chkstrlen(str) { ; ; i < str.length; i++) { ) //如果是汉字,则字符串长度加2 ...
- JavaScript 区分中英文字符的两种方法: 正则和charCodeAt()方法
正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符, 简单且执行效率高. regExpForm.onb ...
- android的logcat的message有字符长度的限制,超过将直接截断
http://blog.csdn.net/qidizi/article/details/47291803 今天想在logcat中输出足够多的调试信息时,发现从logcat中返回的信息中明显少了后面一节 ...
- (SqlServe)关于字符串长度被截断的问题
1. 问题描述 在同步数据时常常会发现一个错误:将截断字符串或二进制数据. 2. 问题原因 这个问题出现的原因是:要插入的数值字段的长度超出了数据库中字段的长度.比如:插入的字符串字节长度是40,数据 ...
- 计算html标签textarea字符长度
今天学习jQuery,做练习计算html标签textarea字符长度,先添加一个视图操作(Action): 创建一个视图,并按下面顺序标记1,2,3进行写html或javascript脚本: 其中标记 ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
随机推荐
- POJ 1018 Communication System 贪心+枚举
看题传送门:http://poj.org/problem?id=1018 题目大意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m个厂家提供生产,而每个厂家生产的同种设备都 ...
- FZU 2020 组合
组合数求模要用逆元,用到了扩展的欧几里得算法. #include<cstdio> int mod; typedef long long LL; void gcd(LL a,LL b,LL ...
- 6.3 Android硬件访问服务APP代码
以下步骤是操作MainActivity类 1.导入包 import android.os.ILedService 2.添加成员变量 private ILedService iLedService = ...
- ios移动旋转缩放动画
//移动旋转动画效果 CATransform3D rotate = CATransform3DMakeRotation(70.0 * M_PI / 180.0, 0.0, 0.0, 1.0); CAT ...
- Apache与weblogic整合实战(独家研究)
用apache来处理外界的请求,再把请求转发给wls,这样就行突破wls express版本号的5用户限制 详细配置例如以下 copy ${WLS_Server}/server/lib下的mod_wl ...
- [array] leetCode-11. Container With Most Water-Medium
leetCode-11. Container With Most Water-Medium descrition Given n non-negative integers a1, a2, ..., ...
- Spring的资源抽象Resource2实体类
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0UAAAGkCAIAAABxYhnsAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWX ...
- C++中的虚析构函数、纯虚析构函数具体解释
C++中析构函数能够为纯虚函数吗? 众所周知.在实现多态的过程中,一般将基类的析构函数设为virtual.以便在delete的时候能够多态的链式调用.那么析构函数能否够设为纯虚呢? class CBa ...
- php课程 3-12 回调参数怎么用
php课程 3-12 回调参数怎么用 一.总结 一句话总结:有时候需要在一个函数中使用另外一个函数,使用回调的话,那么那个函数的几十行代码就不用写了,其实很基础,就是函数名的字符串的替换,超级基础的. ...
- ds finder 唤醒
http://www.hangge.com/blog/cache/detail_594.html