如何替换//中的/except

How to replace / except in http://

本文关键字:中的 except 替换 何替换      更新时间:2023-09-26

我有一个字符串,需要用/替换%2fhttp://除外。

示例:

var str = "http://locahost%2f";
str = str.replace(/%2f/g, "/"); 

不知怎么的,我让str输出http:/locahost/

提前感谢!

应该使用什么

您应该使用decodeURIComponentdecodeURI函数来解码像您这样的编码字符串。例如,decodeURIComponent("http://locahost%2f")将返回http://localhost/

也就是说,decodeURIComponent应该用于解码URI的组件,而不是像http://locahost/那样的完整URI。

你应该看看这个答案,它解释了decodeURIComponentdecodeURI之间的区别以及何时应该使用它们。

解决方法

由于第一个/没有经过编码,因此很难找到一个Javascript函数来执行您想要的操作。在http://之后解码%2f的一个有效解决方案是使用String.prototype.split

工作示例:

var encoded = "http://localhost%2f";
var encodedArray = str.split("://");
var decoded = encodedArray[0] + "://" + encodedArray[1].replace(/%2f/g, "/");

这应该有效:

str = str.replace("%2f", "/");