我想从这样的字符串中提取变量名称:"foo=valor bar=second"
,依此类推。
要返回:
{
foo: "valor",
bar: "second",
...
}
答案 0 :(得分:2)
您可以使用Regex Look Aheads来检查以=
符号开头的变量名
var str = "foo=valor bar=second";
var varRegex = /\w+(?=(\s)*(\=))/g;
var valueRegex = /(?<=(\=)[\s'"]*)\w+/g;
var varArr = str.match(varRegex);
var valueArr = str.match(valueRegex);
console.log(valueArr);
let obj = {};
for(let i in varArr) {
obj[varArr[i]] = valueArr[i];
}
console.log(obj);
答案 1 :(得分:1)
var str = "foo=valor,bar=second";
var obj = {};
str.split(",").forEach(
function(item){
if(item){
var vars = item.split("=");
obj[vars[0]] = vars[1]
}
});
console.log(obj)
答案 2 :(得分:0)
与上一个答案不同的方法:您可以将字符串拆分为空格,然后映射结果数组,以等号拆分以创建对象(左侧是属性,右侧是值)
如果您需要它的特定格式,可以减少它以将数组转换为具有所有值的一个大对象
with open ("installed_packages.txt", "rt", "\r") as installed_packages:
for lines in installed_packages:
print(lines)
答案 3 :(得分:0)
不一定是最快的答案(就提交速度而言),但是维护的正则表达式较少,存储的变量较少。
function toJSON(str) {
const regex = /(\w+)\=(\w+)\s*/g;
let result = {};
let match;
while (match = regex.exec(str)) {
result[match[1]] = match[2];
}
return result;
}
console.log(toJSON("foo=valor bar=second"));