我有一根绳子,像:
Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e我想在&的基础上分割它,同时允许&在值内。
基本上,它是一个url参数字符串,我是根据我的JavaScript中的键获取值的。
I/P
var paramList = Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e
O/P
[Id="bzat4e", Name="Gallery: Blitzer: Algebra & Trigonometry, 4e", Year="2016", Code="bzat4e"]发布于 2016-05-19 11:39:16
您可以使用斯普利特(将其作为数组来获取。
var str = 'Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e';
var res = str.split(/&(?=[^=&]+=)/);
console.log(res);
若要将数组转换为对象,请使用减少()
var str = 'Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e';
var res = str.split(/&(?=[^=&]+=)/).reduce(function(a, b) {
var spl = b.split('=');
a[spl[0].trim()] = spl[1];
return a;
}, {});
console.log(res);
对于旧浏览器,请检查reduce()方法的多填充选项。

发布于 2016-05-19 11:46:06
编辑:不知道为什么我之前没有想到这一点:
var arr = paramList.split(/\b&\b/);在下面试一试:
var paramList = "Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e";
var arr = paramList.split(/\b&\b/);
var finalArr = [];
arr.forEach(function(pair) {
var values = pair.split('=');
var key = values[0];
var value = values[1];
var obj = {};
obj[key] = value;
finalArr.push(obj);
});
console.log(arr);
console.log(finalArr);
发布于 2016-05-19 11:53:02
使用String.split函数对特定输入字符串的解决方案:
var str = "Id=bzat4e&Name=Gallery: Blitzer: Algebra & Trigonometry, 4e&Year=2016&Code=bzat4e",
result = str.split(/(?!\s)[&](?!\s)/);
// now result contains 4 items
console.log(result); // ["Id=bzat4e","Name=Gallery: Blitzer: Algebra & Trigonometry, 4e","Year=2016","Code=bzat4e"]https://stackoverflow.com/questions/37322038
复制相似问题