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
标志的正则表达式调用它。