1

通过使用 Javascript,我想转换文本

"  [a] b    [c]" 

"[a] b [c]"

我的代码如下:

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

然而,结果是

"[a] b    [c]"

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

谢谢!

4

2 回答 2

3

字符串是不可变的。所以replace不会改变test,但会返回一个改变的字符串。因此,您需要分配结果:

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

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

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

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

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

test = test.trim().replace(/\s+\[/g, " [");
于 2013-08-18T16:32:03.150 回答
1

修剪

test = test.replace(/(^\s+|\s+$)/g, test);

或者,str.trim()如果您的浏览器支持,您也可以使用

test = test.trim();

注意:如果您需要支持不提供的浏览器str.trim,您可以随时使用es5-shim


将空间紧凑到一个

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

单线

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

几个测试

var cleanString = function(str) {
  console.log(str.trim().replace(/\s+/g, " "));
};

var examples = [
  "    [a]  b     [c]      ",
  " [a]    [b]    [c]   [d]",
  "[a]       b [c]         ",
  "              [a] b [c] "
];

examples.map(cleanString);

输出

[a] b [c]
[a] [b] [c] [d]
[a] b [c]
[a] b [c]
于 2013-08-18T16:41:03.043 回答