正则表达式用一个空格替换多个空格

给定一个字符串如:

"The dog      has a long   tail, and it     is RED!"

什么样的jQuery或JavaScript的魔术可以用来保持空间只有一个空间最大?

目标:

"The dog has a long tail, and it is RED!"

鉴于你也想要覆盖制表符,换行符等,只需用ss+ ' '替换ss+

string = string.replace(/ss+/g, ' ');

如果你真的只想覆盖空格(不包括制表符,换行符等),那么这样做:

string = string.replace(/  +/g, ' ');

既然你对表演很感兴趣,我用萤火虫来描述这些。 这是我得到的结果:

str.replace( / +/g, ' ' )        ->  790ms
str.replace( /  +/g, ' ' )       ->  380ms
str.replace( / {2,}/g, ' ' )     ->  470ms
str.replace( /ss+/g, ' ' )     ->  390ms
str.replace( / +(?= )/g, ' ')    -> 3250ms

这是在Firefox上运行的100k字符串替换。

如果你认为性能是一个问题,我鼓励你使用萤火虫做你自己的分析测试。 人类在预测他们节目中的瓶颈在哪里是非常糟糕的。

(另外,请注意,IE 8的开发者工具栏也内置了一个分析器 - 可能值得检查一下IE中的性能。)


var str = "The      dog        has a long tail,      and it is RED!";
str = str.replace(/ {2,}/g,' ');

编辑:如果你想要替换所有类型的空白字符,最有效的方式将是这样的:

str = str.replace(/s{2,}/g,' ');
链接地址: http://www.djcxy.com/p/74147.html

上一篇: Regex to replace multiple spaces with a single space

下一篇: Check to see if a string is serialized?