用正则改变字符串的处理速度。

 1function getInterceptedStr(sSource, iLen){
 2var d=new Date();
 3    if(getStrActualLen(sSource) <= iLen){
 4        return sSource;
 5    }

 6    var ELIDED = "";
 7    var str = "";
 8    var l = 0;
 9    var schar;
10    for(var i=0; schar=sSource.charAt(i); i++){
11        str += schar;
12        l += (schar.match(/[^\x00-\xff]/!= null ? 2 : 1);
13        if(l >= iLen - ELIDED.length){
14            break;
15        }

16    }

17    str += ELIDED;
18(alert)(new Date()-d+"ms")
19    return str;
20}
 以上是网易相册的一个字符串取定长的函数。
 以下是我修改的
 
function getInterceptedStr1(sSource,iLen)
{
var d=new Date();
  
var el="",hzlen;
  
var re=new RegExp("^(.{"+(iLen)+"}).*$","i")
 
try{hzlen=sSource.replace(re,"$1").match(/[^\x00-\xff]/g).length}catch(e){hzlen=0;}
  
if(sSource.length+hzlen<=iLen)return sSource; 
  re.compile(
"^(.{"+(iLen-Math.ceil(hzlen/2))+"}).*$","i")
alert(
new Date()-d+"ms")
 
return  sSource.replace(re,"$1").slice(0,iLen-3)+el;
}

 测试2个函数速度变化。
 
演示2个函数 

posted on 2006-10-05 12:21  清雨轩  阅读(363)  评论(0)    收藏  举报

导航