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

Javascript 如何替换字符串中的所有字符?,javascript,string,replace,Javascript,String,Replace,我有一个通过参数传递的字符串,我必须在另一个字符串中替换所有出现的字符串,例如: function r(text, oldChar, newChar) { return text.replace(oldChar, newChar); // , "g") } 传递的字符可以是任何字符,包括^,|,$,[,],(,) 是否有一种方法可以将字符串I^like^potates中的所有^替换为$?使用RegExp对象而不是简单的字符串: text.replace(new RegExp(oldCh

我有一个通过参数传递的字符串,我必须在另一个字符串中替换所有出现的字符串,例如:

function r(text, oldChar, newChar)
{
    return text.replace(oldChar, newChar); // , "g")
}
传递的字符可以是任何字符,包括
^
|
$
[
]


是否有一种方法可以将字符串
I^like^potates
中的所有
^
替换为
$

使用RegExp对象而不是简单的字符串:

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

如果只是将“^”传递给JavaScript替换函数,则应将其视为字符串,而不是正则表达式。但是,使用此方法,它将仅替换第一个字符。一个简单的解决办法是:

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

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

    return replacedText;
}

您的函数不是已经这样做了吗?@TomvanderWoerdt否,JavaScript的
String.prototype.replace
只替换第一次出现的字符串;如果要进行全局替换,则需要使用带有
g
lobal标志的正则表达式。失败原因:
var text=“^xxx^”;替换(新的RegExp(“^”,“g”),“$”请注意,如果字符是特殊的正则表达式字符,则需要对其进行转义,例如“\”、“,”(“,等等。因此
newregexp(“\ \”+oldChar,“g”)
@Phrogz需要一个所有可能转义序列的列表,因为我不知道参数上会出现什么。您必须用两个反斜杠转义
^
,才能使其工作:
var text=“^xxx^”text.replace(新的RegExp(“\^”,“g”),“$”);
@BrunoLM您是对的;虽然JS将允许
/\z/
并将其视为与
/z/
相同的处理方式,但也有一些不正确的情况,例如
/\x/
被视为空的十六进制字符,而不仅仅是
/x/
function r(text, oldChar, newChar)
{
    var replacedText = text;

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

    return replacedText;
}