如何替换字符串中的所有字符?

问题描述:

我有一个是通过参数传递一个字符串,我更换的这一切出现在另一个字符串,例如:如何替换字符串中的所有字符?

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

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

是否有更换,例如一个方法,所有^从字符串I ^like^ potatoes$

+0

你的功能不是已经做到了吗? –

+0

@TomvanderWoerdt不,JavaScript的'String.prototype.replace'只替换第一次出现的字符串;如果需要全局替换,则需要使用具有'g'全局标志的正则表达式。 – Phrogz

+0

我纠正:-) –

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

使用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

如果你简单地传递“^”给JavaScript替换功能就应该被视为一个字符串,而不是一个正则表达式。但是,使用这种方法,它只会替换第一个字符。一个简单的解决方案将是:

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

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

    return replacedText; 
}