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

时间:2013-09-10 11:19:46

标签: javascript jquery

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

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 "";
}

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

     <script type="text/javascript">document.write(qs("ks4day"));</script>

5 个答案:

答案 0 :(得分:98)

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

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

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

以下是一个可能有用的示例:

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'

答案 1 :(得分:9)

您可以将replace()用于此目的

var dateString = 'Friday+September+13th';
var s = dateString .replace(/\+/g, ' ');

答案 2 :(得分:1)

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

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

Ps:旧浏览器也有不错的polyfill

答案 3 :(得分:0)

您尝试过https://www.npmjs.com/package/querystring吗?

import { parse } from 'querystring'; 
parse('ks4day=Friday+September+13th')

返回

{ 'ks4day': 'Friday September 13th' }

假设您使用的Webpack之类的东西知道如何处理导入语句

答案 4 :(得分:-3)

如果这就是你正在做的事情,加号将不会是唯一会给你带来困难的。撇号('),等于(=),加上(+),基本上不在允许的URL字符中的任何内容(参见Percent-encoding @ Wikipedia)都将被转义。

您要找的是decodeURIComponent功能。