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