2011-11-29 148 views
2

我有一個是通過參數傳遞一個字符串,我更換的這一切出現在另一個字符串,例如:如何替換字符串中的所有字符?

function r(text, oldChar, newChar) 
{ 
    return text.replace(oldChar, newChar); // , "g") 
} 

通過可任何字符的字符,包括^|$[]() ...

是否有更換,例如一個方法,所有^從字符串I ^like^ potatoes$

+0

你的功能不是已經做到了嗎? –

+0

@TomvanderWoerdt不,JavaScript的'String.prototype.replace'只替換第一次出現的字符串;如果需要全局替換,則需要使用具有'g'全局標誌的正則表達式。 – Phrogz

+0

我糾正:-) –

回答

9
function r(t, o, n) { 
    return t.split(o).join(n); 
} 
0

使用RegExp對象,而不是一個簡單的字符串:

text.replace(new RegExp(oldChar, 'g'), newChar); 
+1

失敗:var text =「^ xxx ^」; text.replace(new RegExp(「^」,'g'),「$」);' – BrunoLM

+0

請注意,如果它是一個特殊的正則表達式字符,則需要轉義字符。 「\」,「。」,「(」等等。因此'new RegExp(「\\」+ oldChar,「g」)' – Phrogz

+0

@Phrogz需要列出所有可能的轉義序列,因爲我不知道是來參數 – BrunoLM

1

如果你簡單地傳遞「^」給JavaScript替換功能就應該被視爲一個字符串,而不是一個正則表達式。但是,使用這種方法,它只會替換第一個字符。一個簡單的解決方案將是:

function r(text, oldChar, newChar) 
{ 
    var replacedText = text; 

    while(text.indexOf(oldChar) > -1) 
    { 
     replacedText = replacedText.replace(oldChar, newChar); 
    } 

    return replacedText; 
} 
相關問題