我有一个包含多个空格的字符串。我想用加号替换它们。我以为我可以用
var str = 'a b c';
var replaced = str.replace(' ', '+');
但它只替换第一次出现。如何让它替换所有出现的事件?
答案 0 :(得分:434)
这是一个不需要正则表达式的替代方案:
var str = 'a b c';
var replaced = str.split(' ').join('+');
答案 1 :(得分:417)
您需要/g
(全局)选项,如下所示:
var replaced = str.replace(/ /g, '+');
You can give it a try here。与大多数其他语言不同,默认情况下,JavaScript仅替换第一次出现。
答案 2 :(得分:77)
var str = 'a b c';
var replaced = str.replace(/\s/g, '+');
答案 3 :(得分:56)
答案 4 :(得分:23)
答案 5 :(得分:22)
使用带有g
修饰符的正则表达式:
var replaced = str.replace(/ /g, '+');
来自Using Regular Expressions with JavaScript and ActionScript:
/ g启用“全局”匹配。使用replace()方法时,请指定此修饰符以替换所有匹配项,而不是仅替换第一个匹配项。
答案 6 :(得分:7)
您需要寻找一些replaceAll选项
str = str.replace(/ /g, "+");
这是执行replaceAll的正则表达方式。
function ReplaceAll(Source, stringToFind, stringToReplace) {
var temp = Source;
var index = temp.indexOf(stringToFind);
while (index != -1) {
temp = temp.replace(stringToFind, stringToReplace);
index = temp.indexOf(stringToFind);
}
return temp;
}
String.prototype.ReplaceAll = function (stringToFind, stringToReplace) {
var temp = this;
var index = temp.indexOf(stringToFind);
while (index != -1) {
temp = temp.replace(stringToFind, stringToReplace);
index = temp.indexOf(stringToFind);
}
return temp;
};
答案 7 :(得分:6)
在某些浏览器中
(MSIE“通常”; - ))
替换字符串中的空格会忽略不间断的空格(160字符代码)。
应该总是这样替换:
myString.replace(/[ \u00A0]/, myReplaceString)
非常好的详细解释:
http://www.adamkoch.com/2009/07/25/white-space-and-character-160/
答案 8 :(得分:-2)
递归地执行此操作:
public String replaceSpace(String s){
if (s.length() < 2) {
if(s.equals(" "))
return "+";
else
return s;
}
if (s.charAt(0) == ' ')
return "+" + replaceSpace(s.substring(1));
else
return s.substring(0, 1) + replaceSpace(s.substring(1));
}