【问题标题】:Javascript replacing /, str.replace not workingJavascript替换/,str.replace不起作用
【发布时间】:2014-04-17 03:32:18
【问题描述】:

我遇到了一个非常愚蠢的问题,即 javascript 将 url 中的每个 '/' 替换为 '%2F'。这是我现在拥有的:

var url;
url = $(this).val();
url = str.replace('%2F', '/');
window.location.href = $(this).val();

我在这里做错了什么?

【问题讨论】:

  • str 变量从何而来?
  • 我想你的意思是把url = url.replace('%2F', '/');
  • 另外,你的“真正愚蠢的问题”不是问题。 url 被编码,因此某些字符被更改,包括/。比如空格改成%20
  • location.href = encodeURI(this.value);
  • 谢谢大家,但我仍然得到 '%2F' 而不是 '/'

标签: javascript string url


【解决方案1】:

您需要解码 url 以将特殊字符转换回它们应有的字符(例如将 %2F 更改回 /)。为此,您可以使用decodeURI

url = $(this).val();
url = decodeURI(url);

但是,有时空格会替换为 + 而不是 %20。因此,要处理这些情况,您必须在解码您的 url 之前将所有 + 替换为 %20

url = $(this).val();
url = url.replace('+', '%20');
url = decodeURI(url);

现在url 是网址的解码版本。

【讨论】:

  • 仍然得到 '%2F',当我将最后一行更改为 window.location.href = url; 时,其余代码是否有遗漏/错误?
  • 你到底想做什么?您希望窗口 url 中包含这些字符(例如 %2F%20)。请说明您要完成的工作。
  • 我正在尝试做的是根据用户从主页上的表单中的选择直接到特定页面。
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多