全角半角字符混合输入的处理
问题1:输入长度的验证,例如输入内容在数据库中是40字节,所以输入长度不能超过40字节;而JavaScript中的String.length获得的是字符个数。
解决方法:通常全角字符为2字节,而半角字符为1字节;这样String.length获得的长度相当于将全角字符作为1字节处理,所以再加上全角字符的个数就是字节数。考虑到escape()函数处理的字符串中,全角字符都转换成%uXXXX的Unicode形式,可以由此统计出字符串中的全角字符个数。
下面的JavaScript代码扩展了String对象,用来获取字符串的字节数
String.prototype.getBytesLength = function () {
return this.length + (escape(this).split("%u").length - 1);
};
问题2:由于显示空间有限,要求显示内容按指定长度(字节数)截取,这里有全角字符的前一个字节在指定长度范围里的问题。
解决方法:从字符串后端开始,逐个删除字符,直到字符串字节数<=指定长度字节数。
下面的JavaScript代码扩展了String对象,实现了上面的截取方法
String.prototype.removeCharAt = function (index) {
var retStr = this;
if (index <= this.length) {
if (index === 0) {
retStr = this.substring(1);
} else {
if (index == this.length - 1) {
retStr = this.substring(0, this.length - 1);
} else {
retStr = this.substring(0, index) + this.substring(index + 1);
}
}
}
return retStr;
};
String.prototype.intercept = function (length) {
var s = this;
var len = s.getBytesLength();
while (len > length) {
s = s.removeCharAt(s.length - 1);
len = s.getBytesLength();
}
return s;
};
以上文章转至nelson_tu的文章【实用技巧Web篇(4)】
分享到:
相关推荐
在这篇文章中,作者详细介绍了如何使用JavaScript(JS)实现按字节长度截取字符串的功能,并提供了相应的代码示例。对于中文字符,由于其编码方式与英文字符不同,一个中文字符在UTF-8编码下会占用3个字节,而在GBK...
总之,`cut_str()`函数展示了如何在JavaScript或jQuery环境中正确处理包含中文字符的字符串截取,确保截取的结果不会出现乱码或丢失部分字符。在实际开发中,这样的函数对于处理多语言文本尤其重要,特别是涉及到...
1. 字符串截取功能:定义了一个名为`getByteVal`的函数,该函数可以接收两个参数:`val`是待截取的字符串,`max`是字符的截取长度。函数中通过遍历输入字符串的每个字符,并根据字符是否匹配Unicode编码范围(一般...
除了计算长度外,有时还需要对字符串进行截取,例如,当字符串过长时,只显示前N个字符,并在末尾添加省略号或其他符号。这可以通过扩展字符串原型来实现: ```javascript String.prototype.gbtrim = function (len,...
在JavaScript编程中,字符串操作是日常开发中不可或缺的一部分。`js string utils` 是一个专注于提供字符串处理功能的工具库,它包含了一系列实用的函数,帮助开发者更高效地处理字符串数据。这个工具库的源码可以在...
在JavaScript编程中,有时我们需要处理字符串,特别是在处理用户输入或者数据格式化时,可能会遇到需要去除字符串首位特定字符的情况,例如这里的逗号。本话题主要介绍两种去除JavaScript字符串首位逗号的方法。 ...
1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 5、原生JavaScript转义html标签 6、原生JavaScript还原html标签 7、原生JavaScript时间...
* return: 截取后的字符串 */ function autoAddEllipsis(pStr, pLen) { var _ret = cutString(pStr, pLen); var _cutFlag = _ret.cutflag; var _cutStringn = _ret.cutstring; return _cutStringn; }...
截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...
在本例中,我们要探讨的是如何使用JavaScript来实现连续英文字符在指定宽度限制下的自动换行,并确保该方案能够在不同的浏览器(包括较老的IE6和IE7,以及Firefox)中兼容运行。 在CSS中,通常可以使用`word-wrap`...
**字符串左截取功能**:类似VB中的`left`函数,但更智能地处理全角和半角字符,以满足精确长度控制的需求。 ```javascript String.prototype.left = function(num, mode) { if (!/\d+/.test(num)) return this; ...
原生JavaScript实现字符串长度截取 - **功能概述**:此代码片段用于截取指定长度的字符串。 - **应用场景**:适用于处理用户输入的数据,确保数据长度符合系统要求。 - **实现方式**:通过`substring`或`slice`方法...
一旦达到最大允许长度,就会停止遍历并返回截取后的字符串。 ```javascript function getByteVal(val, max) { var returnValue = ''; var byteValLen = 0; for (var i = 0; i ; i++) { if (val[i].match(/[^...
JavaScript处理字符串时,通常把全角和半角字符都视作一个字符,这在处理中英文混排的文本时可能造成问题。借助prototype,我们可以通过***Length方法来弥补这个不足: ```*** ***Length = function() { var arr = ...
这个`left`方法可以根据全角和半角字符的实际长度进行截取,避免在处理中英文混合的字符串时出现长度不一致的问题。 通过以上示例,我们可以看到`prototype`在JavaScript中的重要性。它可以让我们轻松地扩展内置...
例如,String.prototype.left 方法可以在字符串的左侧截取指定数量的字符,并且支持全角和半角字符的正确计算。 prototype的使用有以下几点需要注意: - 当给某个构造函数的prototype添加一个方法后,所有的该类的...