`

JS截取全半角字符串

阅读更多
全角半角字符混合输入的处理
问题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)】
分享到:
评论

相关推荐

    JS按字节截取字符长度实例

    在这篇文章中,作者详细介绍了如何使用JavaScript(JS)实现按字节长度截取字符串的功能,并提供了相应的代码示例。对于中文字符,由于其编码方式与英文字符不同,一个中文字符在UTF-8编码下会占用3个字节,而在GBK...

    Jquery截取中文字符串的实现代码

    总之,`cut_str()`函数展示了如何在JavaScript或jQuery环境中正确处理包含中文字符的字符串截取,确保截取的结果不会出现乱码或丢失部分字符。在实际开发中,这样的函数对于处理多语言文本尤其重要,特别是涉及到...

    js字符限制(字符截取) 一个中文汉字算两个字符

    1. 字符串截取功能:定义了一个名为`getByteVal`的函数,该函数可以接收两个参数:`val`是待截取的字符串,`max`是字符的截取长度。函数中通过遍历输入字符串的每个字符,并根据字符是否匹配Unicode编码范围(一般...

    正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    除了计算长度外,有时还需要对字符串进行截取,例如,当字符串过长时,只显示前N个字符,并在末尾添加省略号或其他符号。这可以通过扩展字符串原型来实现: ```javascript String.prototype.gbtrim = function (len,...

    js string utils

    在JavaScript编程中,字符串操作是日常开发中不可或缺的一部分。`js string utils` 是一个专注于提供字符串处理功能的工具库,它包含了一系列实用的函数,帮助开发者更高效地处理字符串数据。这个工具库的源码可以在...

    js 去除字符串第一位逗号的方法

    在JavaScript编程中,有时我们需要处理字符串,特别是在处理用户输入或者数据格式化时,可能会遇到需要去除字符串首位特定字符的情况,例如这里的逗号。本话题主要介绍两种去除JavaScript字符串首位逗号的方法。 ...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 5、原生JavaScript转义html标签 6、原生JavaScript还原html标签 7、原生JavaScript时间...

    jQuery textarea文本框输入文字字数限制提示代码.zip

    * return: 截取后的字符串 */ function autoAddEllipsis(pStr, pLen) { var _ret = cutString(pStr, pLen); var _cutFlag = _ret.cutflag; var _cutStringn = _ret.cutstring; return _cutStringn; }...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...

    js实现连续英文字符自动换行兼容ie6 ie7和firefox

    在本例中,我们要探讨的是如何使用JavaScript来实现连续英文字符在指定宽度限制下的自动换行,并确保该方案能够在不同的浏览器(包括较老的IE6和IE7,以及Firefox)中兼容运行。 在CSS中,通常可以使用`word-wrap`...

    JS:prototype用法

    **字符串左截取功能**:类似VB中的`left`函数,但更智能地处理全角和半角字符,以满足精确长度控制的需求。 ```javascript String.prototype.left = function(num, mode) { if (!/\d+/.test(num)) return this; ...

    100个直接可以拿来用的JavaScript实用功能代码片段

    原生JavaScript实现字符串长度截取 - **功能概述**:此代码片段用于截取指定长度的字符串。 - **应用场景**:适用于处理用户输入的数据,确保数据长度符合系统要求。 - **实现方式**:通过`substring`或`slice`方法...

    jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)

    一旦达到最大允许长度,就会停止遍历并返回截取后的字符串。 ```javascript function getByteVal(val, max) { var returnValue = ''; var byteValLen = 0; for (var i = 0; i ; i++) { if (val[i].match(/[^...

    js中prototype用法详细介绍

    JavaScript处理字符串时,通常把全角和半角字符都视作一个字符,这在处理中英文混排的文本时可能造成问题。借助prototype,我们可以通过***Length方法来弥补这个不足: ```*** ***Length = function() { var arr = ...

    浅析用prototype定义自己的方法

    这个`left`方法可以根据全角和半角字符的实际长度进行截取,避免在处理中英文混合的字符串时出现长度不一致的问题。 通过以上示例,我们可以看到`prototype`在JavaScript中的重要性。它可以让我们轻松地扩展内置...

    JavaScript prototype属性使用说明

    例如,String.prototype.left 方法可以在字符串的左侧截取指定数量的字符,并且支持全角和半角字符的正确计算。 prototype的使用有以下几点需要注意: - 当给某个构造函数的prototype添加一个方法后,所有的该类的...

Global site tag (gtag.js) - Google Analytics