在JavaScript中用下划线replace空格?

我试图用这个代码来replace空格_,它用于string中的第一个空格,但所有其他空间的实例保持不变。 有人知道为什么?

function updateKey() { var key=$("#title").val(); key=key.replace(" ","_"); $("#url_key").val(key); } 

尝试.replace(/ /g,"_");

编辑 :或.split(' ').join('_')如果你厌恶RE

编辑 : 约翰Resig说 :

如果使用静态search和静态replace通过string进行search和replace,使用.split(“match”)执行动作的速度会更快。join(“replace”) – 这似乎违反直觉,但它能够工作在大多数现代浏览器中这种方式。 (在下一个版本的Firefox中,改变.replace(/ match / g,“replace”)的性能正在发生变化 – 所以前面的说法不会太长)。

尝试这个:

 key=key.replace(/ /g,"_"); 

这将做一个全球性的查找/replace

JavaScriptreplace

回答Prasanna的问题如下:

如何用Javascript中的单个空间replace多个空格?

你将使用相同的函数replace一个不同的正则expression式。 空格的expression式是\s ,“1次或更多次”的expression式是+加号,所以你只需要用下面的代替Adam的答案:

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

我为它创build了JS性能testinghttp://jsperf.com/split-and-join-vs-replace2

你可以试试这个

  var str = 'hello world !!'; str = str.replace(/\s+/g, '-'); 

它甚至会用单个“ – ”replace多个空格。

用下划线replace空格

 var str = 'How are you'; var replaced = str.split(' ').join('_'); 

输出: How_are_you

我知道这是旧的,但我没有看到任何人提及扩展stringprototype

 String.prototype.replaceAll = function(search, replace){ if(!search || !replace){return this;} //if search entry or replace entry empty return the string return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all. };