This question already has answers here:
Replace method doesn't work
                                
                                    (4个答案)
                                
                        
                                5年前关闭。
            
                    
通过使用Javascript,我想转换文本

"  [a] b    [c]"




"[a] b [c]"


我的代码如下:

var test = "  [a] b    [c]";
test.replace(/\s+\[/g, "[");
alert(test);


但是,结果是

"[a] b    [c]"


我想知道为什么?任何想法?

谢谢!

最佳答案

字符串是不可变的。因此,replace不会更改test,而是返回更改后的字符串。因此,您需要分配结果:

test = test.replace(/\s+\[/g, "[");


请注意,这将导致[a] b[c]。要获得实际结果,您可能需要使用:

test = test.replace(/(^|\s)\s*\[/g, "$1[");


如果不是在字符串的开头,这可以确保写回第一个空格字符。

或者,先使用trim并手动写回一个空格:

test = test.trim().replace(/\s+\[/g, " [");

10-05 20:44
查看更多