2009-01-13 108 views
238

我想用这个代码来替换空格_,它用于字符串中的第一个空格,但所有其他空间实例保持不变。任何人都知道为什么?在JavaScript中用下划线替换空格?

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

回答

473

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

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

编辑John Resig said

如果您正在搜索并替换 通过一个带有静态搜索的字符串CH 和静态取代它的速度更快 执行与 .split(“匹配”)的行动,我们(“替换”) - 这似乎违反直觉的,但它 管理工作中最 现代浏览器的方式。 ( 到 下一个版本的火狐 - 将大大提高.replace(/ match/g, “替换”)的性能 - 因此以前的语句 将不会很长。 )

+8

呸!你击败我58secs!我不应该添加key =键。大声笑 – Adam 2009-01-13 22:12:25

+0

反正它在我的剪贴板。什么是可能性。 – 2009-01-13 22:15:50

+1

有没有办法做到这一点没有正则表达式? – 2009-01-13 22:20:50

38

要回答以下人员Prasanna的问题:

你如何通过 单一空间的Javascript替换多个空格?

您将使用具有不同正则表达式的相同函数replace。对于空白的表达是\s和“1次以上”的表述是+加号,所以你只是用以下内容替换亚当的回答是:

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

你可以试试这个

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

它甚至单取代多个空格“ - ”。

4

我知道这是旧的,但我没有看到任何人提及延长字符串prototype

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. 
}; 
7

替换为空间下划线

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

输出: How_are_you

相关问题