如何从URL中删除“&”符号

4

我得到一个包含amp;的URL。有没有办法去掉它,目前我尝试使用URLDecode函数,但它不起作用。我需要使用简单的字符串替换来删除它吗?还是有更好的方法来做这件事?


你可以展示一下URL吗?(只需更改主机名即可) - user692942
2
首先,你不应该在那里放置&,它们是HTML编码实体,这就是为什么URLDecode()无法工作的原因。如果它是URL编码的,它将是%3D而不是&。我猜你想看看为什么URL会像那样传递,可能是因为某个人错误地使用了HTMLEncode() - user692942
好的,谢谢。但是我不能要求我的客户做出任何更改,所以我必须在自己的端口进行管理。因此,有没有更好的解决方法? - Jyotish Singh
如果它是HTML编码的,那么你需要解码它-https://dev59.com/H2025IYBdhLWcg3wRDq8#6116611,或者如果只有`&`被编码,使用类似于`url = Replace(url, "amp;", "")的东西,但是你必须使用Response.Redirect()` *(假设你正在使用ASP)*重新运行带有正确参数的页面。问题在于客户端,应该是他们确保向您传递正确格式的URL。 - user692942
@JNevill 这取决于客户端是否已经发送了不正确的URL,除非您解析URL(使用Replace()或其他方法)并重新运行请求(无论是Response.Redirect()还是ServerHTTPRequest.Send()),否则为时已晚。 - user692942
显示剩余4条评论
2个回答

5
正如@Lankymart所指出的那样,URLDecode只能处理URL编码的字符(%26),而不能处理HTML实体&)。使用普通的字符串替换将HTML实体&替换为字面上的“&”号。
url = Replace(url, "&", "&")

如果URL已经从客户端接收到了,那么这样做有什么作用呢?我猜在URL被剥离&后,OP最终还是需要“重新运行”请求。 - user692942
我认为我们没有足够的信息来猜测URL的来源或他将用它做什么,所以我只回答了直接的问题(或者说把评论变成了实际的答案)。 - Ansgar Wiechers
我理解你的观点,但是OP在确认时表明他们无法控制所接收到的URL。 - user692942
1
但是,如果他不展示(部分)代码或解释他想要完成什么任务,我们只能进行猜测,我宁愿不这样做。一旦有更多信息,每个人都可以自由地发表更好的答案(或改进这个答案,因为我已将其发布为维基答案)。 - Ansgar Wiechers

0
在Angular中,我将amp;添加到参数名称中。
    this.activatedRoute.queryParams.subscribe(params => {
  this.user_id = params['user_id'];
  this.practice_id = params['amp;practice_id'];
  this.patient_id = params['amp;patient_id'];
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接