网站地图    收藏   

主页 > 前端 > javascript >

JS判断字符串字节长度(自动识别中英文)

来源:自学PHP网    时间:2023-02-02 09:37 作者: 阅读:

[导读] 这个字符串长度计算函数可以区别如是数字英文长度记为1,中文记为2了,这个适合计算机字符编码原理了,下面看一些实例。...

你早晚会用到的,用CSS来控制文字长度毕竟不是什么需求都能满足,现在后台也不管字符长度截取了,只能用JS来截取字符串了。


/**
 * 返回字符的字节长度(汉字算2个字节)
 * @param {string}
 * @returns {number}
 */
 
var getByteLen = function (val) {
    var len = 0;
    for (var i = 0; i < val.length; i++) {
        if (val[i].match(/[^x00-xff]/ig) != null) //全角
            len += 2;
        else
            len += 1;
    };
    return len;
}
var sAbc = '1a啊啊22飞3地方a';
var ol = getByteLen(sAbc);
alert('直接用length取得的字节长度:' + sAbc.length);
alert('通过getByteLen()方法取得的字节长度:' + ol);


通过上面的方法就可以继续写一个截取指定长度的新字符串了,截取掉的部分用&hellip;补全:


/**
 * 返回字符的字节长度(汉字算2个字节)
 * @param {string}{number}
 * @returns {string}   +'...'
 */
 
var cutStrForNum = function (str, num) {
    var len = 0;
    for (var i = 0; i < str.length; i++) {
        if (str[i].match(/[^x00-xff]/ig) != null) //全角
            len += 2;
        else
            len += 1;
    }
    if (len >= num) {
        newStr = str.substring(0, num) + "...";
    }
    return newStr;
}
var sAbc = '1a啊啊22飞3地方a';
alert(cutStrForNum(sAbc, 3));


看个实例JS判断字符输入个数



1. $('textarea#txtPrizeNote');     //表示textarea控件名称


2. 'span' 显示剩余字数的标签


HTML:


<div>
        <textarea id="txtPrizeNote" runat="server" height="74px" width="480px" maxlength="10"
            style="width: 480px; height: 74px; float: left"></textarea>
        <span style="color: Red;">*</span><br />
        剩余字数:<span id="showmsg" style="color: red"></span>
</div>
 
<script type="text/javascript">
        //返回val的字节长度
        function getByteLen(val) {
            var len = 0;
            for (var i = 0; i < val.length; i++) {
                if (val[i].match(/[^x00-xff]/ig) != null) //全角
                    len += 2;
                else
                    len += 1;
            }
            return len;
        }
        //返回val在规定字节长度max内的值
        function getByteVal(val, max) {
            var returnValue = '';
            var byteValLen = 0;
            for (var i = 0; i < val.length; i++) {
                if (val[i].match(/[^x00-xff]/ig) != null)
                    byteValLen += 2;
                else
                    byteValLen += 1;
                if (byteValLen > max)
                    break;
                returnValue += val[i];
            }
            return returnValue;
        }
        $(function() {
            var _area = $('textarea#txtPrizeNote');
            var _info = _area.next();
            var _max = _area.attr('maxlength');
            var _val;
            _area.bind('keyup change', function() { //绑定keyup和change事件
                if (_info.find('span').size() < 1) {//避免每次弹起都会插入一条提示信息
                    _info.append(_max);
                }
                _val = $(this).val();
                _cur = getByteLen(_val);
                if (_cur == 0) {//当默认值长度为0时,可输入数为默认maxlength值
                    _info.text(_max);
                } else if (_cur < _max) {//当默认值小于限制数时,可输入数为max-cur
                    _info.text(_max - _cur);
                } else {//当默认值大于等于限制数时
                    _info.text(0);
                    $(this).val(getByteVal(_val,_max)); //截取指定字节长度内的值
                }
            });
        });
    </script>

以上就是JS判断字符串字节长度(自动识别中英文)全部内容,感谢大家支持自学php网。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论