删除URL查询字符串中的加号(+)

use*_*485 32 javascript jquery

我正在尝试获取以下URL中的字符串以显示在我的网页上.

http://example.com?ks4day=Friday+September+13th

编辑:当我的CRM程序合并URL时,URL中的日期将因人而异.

我可以使用下面的代码在我的网页上显示它,问题是加号(+)也是通过.

例如.周五+月+ 13日

我需要它做的是用空格替换加号(+),所以它看起来像这样:

例如.9月13日星期五

我是新手,所以我在解决它时遇到了一些麻烦.

任何帮助,将不胜感激.

这是我在.js文件中使用的代码

      function qs(search_for) {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i<parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0  && search_for == parms[i].substring(0,pos)) {
            return parms[i].substring(pos+1);;
        }
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

这是我在我的网页上使用的代码,用于显示它

     <script type="text/javascript">document.write(qs("ks4day"));</script>
Run Code Online (Sandbox Code Playgroud)

Luk*_*uke 110

虽然Bibhu的答案适用于这种情况,但decodeURIComponent如果您在URI字符串中编码了字符,则需要添加.如果+您的URI字符串中有合法字符(as %2B),您还需要确保在解码之前执行替换.

我相信这是最好的一般方法:

var x = qs("ks4day");        // 'Friday+September+13th'
x = x.replace(/\+/g, '%20'); // 'Friday%20September%2013th'
x = decodeURIComponent(x);   // 'Friday September 13th'
Run Code Online (Sandbox Code Playgroud)

以下是它可能有用的示例:

var x = '1+%2B+1+%3D+2'; 
x = x.replace(/\+/g, '%20'); // '1%20%2B%201%20%3D%202'
x = decodeURIComponent(x);   // '1 + 1 = 2'
Run Code Online (Sandbox Code Playgroud)


Pra*_*ush 10

使用正则表达式解析字符串通常容易出现很多错误。值得庆幸的是,所有现代浏览器都提供URLSearchParams以适当的方式处理来自 url 字符串的参数:

var params = new URLSearchParams(window.location.search);
var value = params.get('ks4day');
// "Friday September 13th"
Run Code Online (Sandbox Code Playgroud)

Ps:旧浏览器也有很好的polyfill

  • 使用本机实现始终是最好的。这肯定是 2020 年的最佳答案。 (2认同)

Bib*_*bhu 9

您可以使用replace()来实现此目的

var dateString = 'Friday+September+13th';
var s = dateString .replace(/\+/g, ' ');
Run Code Online (Sandbox Code Playgroud)


bok*_*oky -2

如果这就是您正在做的事情,那么加号将不是唯一会给您带来困难的符号。撇号 (')、等于 (=)、加号 (+) 以及基本上任何不在允许的 URL 字符中的内容(请参阅百分比编码@维基百科)都将被转义。

您很可能正在寻找decodeURIComponent函数。

  • @SalmanA - 您应该在decodeURIComponent *之前*替换“+”,而不是之后 - 否则您将错误地将“%2B”解码为“”。 (35认同)
  • 呜呜。使用decodeURIComponent 让它工作。例如。&lt;script type="text/javascript"&gt;document.write(decodeURIComponent(qs("ks4day")).replace(/‌​\+/g, " "));&lt;/script&gt; (5认同)