惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 清雨轩

用dom生成html文件.的常见问题 div+css制作企业网站经验收集 appendNode? 可以直接一个节点树 - 清雨轩 - 博客园 php(alexa排名查询) 下拉菜单 美工版(不用写代码) CSS学习随笔 windows2003 ftp及相关权限 php出现Unable to load dynamic library 'c:\php\extensions\php_mssql.dll' - 清雨轩 win2003的服务器配置. 关于引用,还是按值. 开发时会遇到..注意 个人javascript作品集 事件监听是可吃CPU的事情。以后还是不用事件监听 faq:responseXML has no properties in firefox or responseXML is null 正则表达式 不允许为空 下拉头像菜单 表单检测函数 [原创]使用js+xml制作的IE和FF都支持的树型菜单(程序不到4k哦) 个人觉得比较经典的菜单(来源:kijiji.cn) [转载]纯js解决小偷的乱码.(强)
用正则改变字符串的处理速度。
清雨轩 · 2006-10-05 · via 博客园 - 清雨轩

 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个函数