替换数组值

时间:2014-02-11 17:28:36

标签: javascript arrays url query-string

我想从URL查询字符串中获取数据并将其显示在HTML文档的正文中。我无法让脚本用空格替换+符号。

示例网址:www.mywebsite.com/?item=Sandwich&bread=White+Bread

在HTML正文中,item的文本字段将显示“Sandwich”,但面包的文本字段将显示“White + Bread”。如何用空格替换+?

这是我用来从URL获取值的函数

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r;
}

    $("span.item").text(querystring('item'));
    $("span.bread").text(querystring('bread'));

我尝试过使用它,但它告诉我数组没有替换函数。

.replace(/\+/g, ' ')

2 个答案:

答案 0 :(得分:3)

你的函数返回一个数组,试着改变它:

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r[0];
}

然后你可以使用你的替换

.replace(/\+/g, ' ')

答案 1 :(得分:0)

我会用这样的东西替换你的函数,为了便于阅读,摆脱正则表达式。它处理未定义的键/值,此外,您可以轻松地将其第一部分重构为parseQueryString函数,返回当前document.location.search的字典。

function querystring(key) {
   var hash = {};

   var pairs = document.location.search.substr(1).split('&');
   for(var i = 0; i < pairs.length; i++) {
       var tuple = pairs[i].split('=');
       hash[tuple[0]] = tuple[1];
   }

   var val = hash[key];
   return (val) ? val.replace(/\+/g, ' ') : undefined;
}

用法:

querystring('bread');
> White Bread