






















1
function getInterceptedStr(sSource, iLen){
2
var 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个函数
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。