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

自动将双字节字符长度计算为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 >
 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值