面试碰到这个问题,我按照这个思路写的方案,他最后让我回去再看看,我想问下,还有什么更好的实现方式么?
var url = "http://www.xxxx.com/index.html?keya=a&b=b&c=c";
function parseQueryString(argu){
var str = argu.split('?')[1];
var result = {};
var temp = str.split('&');
temp.forEach(function(item){
var temp2 = item.split('=');
result[temp2[0]] = temp2[1];
})
return result;
}
console.log(parseQueryString(url))
在URL中,参数提取为对象通常可以通过正则表达式或一些第三方库(如param-parser或urlparse)来实现。以下是一个使用Python的param-parser库提取URL参数的示例:
```python import paramparser
url = "https://example.com/path?param1=value1¶m2=value2"
params = paramparser.parse(url)
param1 = params['param1'] param2 = params['param2']
print("Param1: ", param1) print("Param2: ", param2) ```
在这个示例中,我们首先导入了paramparser库,然后定义了一个URL字符串。然后,我们使用paramparser的parse函数来解析URL,这个函数会返回一个包含所有URL参数的字典。
接着,我们使用params['param1']和params['param2']来获取参数值。这些参数值都是通过URL字符串的['param1', 'param2']
或['param1', 'param2']
数组来索引的。
注意,paramparser库只处理基本的URL参数,如字符串、数字和布尔值。对于一些复杂类型的参数,可能需要使用其他方法或库,如requests库的参数提取功能或第三方库,如urlparse和sitemaps等。
此外,提取URL参数时,如果URL字符串中的参数是以占位符(如?
、*
等)开头的,或者参数值以逗号分隔,那么需要对URL进行相应的处理。在这种情况下,你可以使用paramparser的split()
函数来根据占位符或逗号分割参数值,或者使用正则表达式来匹配参数值。