我正在尝试为所有专门用于搜索词的“%2F”字符串设置替换项。我已经通过encudeURIComponent(search_term)运行了搜索词,并且只需要对%2Fs进行两次转义。

如果搜索词为“ ac / dc”,我希望结果为:ac%252Fdc。

我可以这样快速完成:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace("%2F", "%252F");


但是,这不适用于ac // dc,返回:

ac%252F%2Fdc


当我想要的是:

ac%252F%252Fdc


我可以通过像这样运行替换来解决此问题...

search_term = search_term.replace("%2F%2F", "%252F%252F");


这是不可扩展的。我想知道为什么第一次替换不能同时替换两个“%2F”字符串。

谢谢。

最佳答案

您需要使替换全局,像这样:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace(new RegExp("%2F", 'g'), "%252F");


我知道,这很可怕,但是有效。



编辑:正如Rob W所建议的,最好使用正则表达式文字来做到这一点:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace(/%2F/g, "%252F");

09-25 16:30