网站地图    收藏   

主页 > 前端 > javascript >

Javascipt获取字符串真实长度(兼容IE,fireFox)

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 在js中获取字符串长度我们会用到length来判断了,但是此函数对中文混合体是判断不准的,下面我总结了几个支持中英文识别的字符串长度检测函数。...

JS原先的长度中文跟英文一样一个字符为1个长度。所以这里就得需要大家自己判断并获取字符串的实际长度了。
核心代码:

 代码如下 复制代码
var jmz = {};
jmz.GetLength = function(str) {
    ///<summary>获得字符串实际长度,中文2,英文1</summary>
    ///<param name="str">要获得长度的字符串</param>
    var realLength = 0, len = str.length, charCode = -1;
    for (var i = 0; i < len; i++) {
        charCode = str.charCodeAt(i);
        if (charCode >= 0 && charCode <= 128) realLength += 1;
        else realLength += 2;
    }
    return realLength;
};   

执行代码:

 代码如下 复制代码

alert(jmz.GetLength('测试测试ceshiceshi));

image

JS版获取字符串真实长度和取固定长度的字符串函数(兼容IE,fireFox)

   

 代码如下 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>JS版获取字符串真实长度和取固定长度的字符串函数(兼容IE,fireFox)
    </title>
    </head>
    <body>
    <script type="text/javascript">
    // 得到字符串的真实长度(双字节换算为两个单字节)
    function getStrActualLen(sChars)
    {
        return sChars.replace(/[^x00-xff]/g,"xx").length;
    }
    // 截取固定长度子字符串 sSource为字符串iLen为长度
    function getInterceptedStr(sSource, iLen)
    {
        if(sSource.replace(/[^x00-xff]/g,"xx").length <= iLen)
        {
            return sSource;
        }
        var str = "";
        var l = 0;
        var schar;
        for(var i=0; schar=sSource.charAt(i); i++)
        {
            str += schar;
            l += (schar.match(/[^x00-xff]/) != null ? 2 : 1);
            if(l >= iLen)
            {
                break;
            }
        }
        return str;
    }
    var str1="这是一个字符串截取的函数,this is a test!";
    alert(getInterceptedStr(str1,29));
    </script>
    </body>
    </html>

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

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

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

添加评论