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

Remove plus sign (+) in URL query string

本文关键字:URL 查询 字符串 删除      更新时间:2023-09-26

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

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

编辑:URL中的日期将因人而异,因为它被我的CRM程序合并。

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

例如。周五+9月+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>

尽管 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'

你可以使用 replace() 来实现这个目的

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

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

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

Ps:旧浏览器也有一个很好的填充。

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

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

返回

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

假设你正在使用像 Webpack 这样知道如何处理导入语句的东西

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

您很可能正在寻找解码URIComponent函数。