关于javascript:用”+”替换字符串中的所有空格

Replace all spaces in a string with '+'

本问题已经有最佳答案,请猛点这里访问。

我有一个包含多个空格的字符串。我想用加号替换这些。我想我可以用

1
2
var str = 'a b c';
var replaced = str.replace(' ', '+');

但它只替换第一次出现的内容。我怎样才能让它替换所有发生的事件?


这里有一个不需要regex的替代方案:

1
2
var str = 'a b c';
var replaced = str.split(' ').join('+');


您需要/g选项(全局),如下所示:

1
var replaced = str.replace(/ /g, '+');

你可以在这里试一试。与大多数其他语言不同,默认情况下,javascript只替换第一次出现的语言。


1
2
var str = 'a b c';
var replaced = str.replace(/\s/g, '+');


你也可以这样做

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

看看小提琴


在字符串中使用全局搜索。G旗

1
str.replace(/\s+/g, '+');

来源:replaceall函数


使用带有g修饰符的正则表达式:

1
var replaced = str.replace(/ /g, '+');

通过将正则表达式与javascript和actionscript一起使用:

/g enables"global" matching. When using the replace() method, specify this modifier to replace all matches, rather than only the first one.


你需要寻找一些替换选项

1
str = str.replace(/ /g,"+");

这是一种进行替换的正则表达式方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;

};


不间断空间问题

在某些浏览器中

(msie"通常";-)

替换字符串中的空格将忽略不间断空格(160个字符的代码)。

应始终这样更换:

1
myString.replace(/[ \u00A0]/, myReplaceString)

很好的详细解释:

White-space and character 160


递归执行此操作:

1
2
3
4
5
6
7
8
9
10
11
12
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));
}