通过使用 Javascript,我想转换文本
" [a] b [c]"
至
"[a] b [c]"
我的代码如下:
var test = " [a] b [c]";
test.replace(/\s+\[/g, "[");
alert(test);
然而,结果是
"[a] b [c]"
我想知道为什么?任何想法?
谢谢!
通过使用 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, " [");
修剪
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]