2009-01-13 66 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