JS版获取字符串真实长度和取固定长度的字符串函数

时间:2023-01-07 07:53:31
自动将双字节字符长度计算为2,取字符时也按照单字节的长度取,如2即取1个汉字或两个字母,1取一个汉字或字母。
<!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" xml:lang="en" lang="en">

<head>
  
<title></title>
</head>

<body>
<div id='jsdiv' style="border:1px solid #ccc"></div>
<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(getStrActualLen(str1));
alert(getInterceptedStr(str1,25));
</script>
</body>
</html>