【发布时间】:2011-04-17 05:34:55
【问题描述】:
我有一个包含多个空格的字符串。我想用加号替换这些。我以为我可以使用
var str = 'a b c';
var replaced = str.replace(' ', '+');
但它只替换第一次出现。我怎样才能让它替换所有出现的地方?
【问题讨论】:
-
您是否尝试对字符串进行 URL 编码?如果是这样,最好寻求帮助,而不仅仅是如何处理空格。
-
@Lasse,我想这最终就是我想要做的,因为我想要格式化的字符串最终会成为 URL 的一部分。但是,我认为这个问题仍然有其自身的优点,因为替换字符串中所有出现的子字符串并不是很明显。
-
对,这也是我的怀疑。答案是:使用
encodeURIComponent()。不要尝试用字符串替换自己破解它;这比你想象的要复杂得多。这会将空格编码为%20,而不是+。%20一样有效(实际上更有效,因为它适用于路径组件,而+仅表示查询组件中的空格),但如果您希望它看起来更漂亮一点,您可以随时使用replace(/%20/g, '+')当然之后。您可能很想使用escape(),因为它确实使用了+,但它也会将所有非 ASCII 字符都弄错——避免。 -
我同意这一点,这个问题本身就有优点:) 我只是想知道这是否是你想要结束的地方,可能有更好的解决方案适合你。但是,是的,这个问题本身就很好,这是毫无疑问的。我知道足够多的 javascript 来应付,而且 .replace 并没有取代所有的事件对我来说是新闻。
-
比较正则表达式和拆分/加入细长字符串。 jsperf.com/replace-characters-in-string
标签: javascript string