正则表达式,用于将多个空格替换为单个空格

2022-08-29 22:32:54

给定一个字符串,如下所示:

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

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

目标:

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

答案 1

鉴于您还想覆盖选项卡,换行符等,只需替换为:\s\s+' '

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

如果您真的只想覆盖空格(因此不想覆盖制表符,换行符等),请执行以下操作:

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

答案 2

由于您似乎对性能感兴趣,因此我用firebug分析了这些内容。以下是我得到的结果:

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

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

如果您认为性能是一个问题,我鼓励您使用firebug进行自己的分析测试。众所周知,人类在预测程序中的瓶颈所在方面表现不佳。

(另外,请注意,IE 8的开发人员工具栏还内置了一个探查器 - 可能值得检查IE中的性能。