用“+”替换字符串中的所有空格

IT技术 javascript string
2021-01-18 11:25:10

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

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

但它只替换第一次出现。我怎样才能让它替换所有的出现?

6个回答

这是一个不需要正则表达式的替代方案:

var str = 'a b c';
var replaced = str.split(' ').join('+');
@JitendraPancholi 他想替换空格,而不是“空格”。在这种情况下,我假设空格只表示空格字符,而不仅仅是/s匹配的任何旧空格特别是因为他在 JavaScript 中这样做,并且用字符替换空格字符(但不是其他空格)+是编码 URL 的标准方法。这可能就是为什么只替换空格字符的正则表达式解决方案的投票数是替换所有空格字符的 10 倍。
2021-03-15 11:25:10
使用 str = str.replace(/\s/g, "+");
2021-03-27 11:25:10
如果您的项目使用其中包含 30 个空格的 URL,那么您需要担心的事情比优化字符串替换更重要。
2021-03-30 11:25:10
@JitendraPancholi 替换所有空格,而不仅仅是空格字符。这里的另一个正则表达式答案很好。
2021-04-01 11:25:10
与 reg 表达式版本相比,此选定解决方案在大替换时速度较慢。使用发布的 3 个解决方案进行测试:jsbin.com/isadi3/2 Firefox 具有最小的时间差异,IE 具有明显的差异。因此,如果速度很重要并且您有大量替代品,则 reg exp 是最佳选择。
2021-04-04 11:25:10

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

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

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

哦,我的...我试过无数次'/ /g'之类的,应该没有引号。令我震惊。
2021-03-16 11:25:10
这比拆分/加入版本具有更好的可读性恕我直言
2021-04-09 11:25:10
var str = 'a b c';
var replaced = str.replace(/\s/g, '+');
比选择的解决方案更清洁、更快;工作在哪里/ /g没有。
2021-04-08 11:25:10

你也可以这样做:

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

看看这个小提琴

您能否解释一下为什么这是解决问题的好方法。
2021-03-21 11:25:10
@Jitendra Pancholi 非常感谢,你的回答确实帮助了我,因为我有一些日语 :) 空格,我无法用 .split(' ').join('+'); 替换它。你的回答对我有帮助。谢啦。
2021-04-05 11:25:10
反对票的另一个可能原因是这个答案已经在大约四年前发布
2021-04-07 11:25:10
好的,我在答案中添加了小提琴。
2021-04-09 11:25:10
不是我的反对票,由于内容的长度,我有一个审查任务要检查。我认为要求更高的人没有看到解释并且不屑一顾地发表评论。请把你的评论作为答案。
2021-04-11 11:25:10

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

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

来源:replaceAll 函数

我在您的答案上方测试了许多正则表达式,但您的答案是最正确的,因为它还替换了多个链接空格。
2021-03-21 11:25:10
不起作用:演示输入:"hello !!!",预期输出:"hello++++!!!",实际输出:"hello+!!!"
2021-03-23 11:25:10