Javascript 如何替换\字符?

Javascript 如何替换\字符?,javascript,replace,while-loop,Javascript,Replace,While Loop,我得到了以下代码 replaceforever: function(string,find,replace){ while(_.contains(string,find)){ string.replace(find,replace); } return string;} 我正在向它发送类似于'/routes\admin\articles.js'、'\\'、'/' 但它似乎总是一次进入while循环,然后用一个“/”将其全部更改,结果是:| 而不是一个好的/routes/admin/arti

我得到了以下代码

replaceforever: function(string,find,replace){
while(_.contains(string,find)){
  string.replace(find,replace);
}
return string;}
我正在向它发送类似于
'/routes\admin\articles.js'、'\\'、'/'
但它似乎总是一次进入while循环,然后用一个“/”将其全部更改,结果是:| 而不是一个好的
/routes/admin/articles.js


有人能解释一下我做错了什么吗?

如果我做对了,这将是一个全球性的替代:

stringVariable.replace(/\\/g, '/');

我认为问题实际上是while循环根本没有被输入,而不是只输入一次。请注意,您的输入实际上已经有了一个
/
,我想这就是您看到的

这一行:

string.replace(find,replace);
使用指定的替换项创建新字符串。然后把它扔掉。因此,如果您的while循环被输入一次,它实际上将是一个无限循环,因为循环体实际上不做任何事情。相反,您需要将结果存储在变量
字符串中

string = string.replace(find,replace);
但我不确定这种方法是否真的是个好主意。JavaScript已经使用正则表达式提供了“全部替换”功能:

result = input.replace(/\\/g, '/');

首先:
string.replace()
将替换所有匹配项,因此不需要迭代:)

第二:
string.replace()
将返回一个新字符串,它不会更改所使用的对象

所以你需要一些类似的东西:

replaceforever: function (string,find,replace) {  
    return string.replace(find,replace);  
}

问题在于测试,而不是代码(假设您使用的是下划线.js; 使用正则表达式会更明智)

您需要在输入字符串中转义反斜杠:

replaceforever('./routes\\admin\\articles.js','\\','/');

另一方面,
'./routes\admin\articles.js'
的计算结果为
'./routes admin.js'

为什么不使用正则表达式呢?另外请注意,如果您尝试将“/routes\admin\articles.js”作为字符串文字,则需要转义这些反斜杠。
replacefever
函数中的
是什么?结果是:“./routesadminarticles.js”是的,对不起。他需要加倍反斜杠\\结果是“/routesadminarticles.js”@tntu:不,不是。你为什么这么想?@tntu-看我对这个问题的评论。如果使用字符串文字直接调用该函数,反斜杠将转义后面的字符。您需要转义反斜杠。当使用字符串作为第一个参数调用时,它不会替换所有匹配项。它将取代第一场比赛。要替换所有匹配项,需要使用带有
g
标志的正则表达式调用它。