将字符串拆分为对象javascript
我有这根绳子将字符串拆分为对象javascript,javascript,node.js,Javascript,Node.js,我有这根绳子 '"pen pineapple" apple pen "pen pen"' 有没有一种好方法可以将其转换为如下所示的对象: { a: "pen pineapple", b: "apple", c: "pen", d: "pen pen" } 我正在寻找纯javascript的解决方案 正在拆分带引号的字符串 然后将该数组转换为对象 所以,当你把这些答案结合起来的时候,看起来是这样的 var myRegexp = /[^\s"]+|"([^"]*)"/gi; var mySt
'"pen pineapple" apple pen "pen pen"'
有没有一种好方法可以将其转换为如下所示的对象:
{
a: "pen pineapple",
b: "apple",
c: "pen",
d: "pen pen"
}
我正在寻找纯javascript的解决方案 正在拆分带引号的字符串 然后将该数组转换为对象 所以,当你把这些答案结合起来的时候,看起来是这样的
var myRegexp = /[^\s"]+|"([^"]*)"/gi;
var myString = '"pen pineapple" apple pen "pen pen"';
var myArray = [];
do {
var match = myRegexp.exec(myString);
if (match != null) {
myArray.push(match[1] ? match[1] : match[0]);
}
} while (match != null);
var obj = myArray.reduce(function(acc, cur, i) {
acc[i] = cur;
return acc;
}, {});
console.log(obj);
您可以使用调整版本的,并对键使用方法
var str=''pen菠萝'apple pen“pen pen”,
arr=str.match(/(“*?”[^”\s]+)(?=\s*\s*$)/g),
对象={};
arr.forEach(函数(a,i){
对象[(i+10).toString(36)]=a.replace(/“/g.”);
})
console.log(对象)代码>这可能不是最有效的函数,但可以满足您的需要(返回数组)
函数拆分器(inputString){
var splitted=inputString.split(“”);
var out=[]
var temp=“”;
var quoteStarted=false;
对于(i=0;i-1&&!quoteStarted){
temp+=拆分的[i]+'';
quoteStarted=true;
}else if(quoteStarted&&splitted[i].indexOf(“”)=-1){
temp+=拆分的[i]+'';
}else if(quoteStarted&&splitted[i].indexOf(“”)>-1){
温度+=拆分的[i];
推出(温度);
quoteStarted=false;
温度=”;
}否则{
向外推(拆分[i])
}
}
返回;
}
它可以用纯javascript实现,如下所示
let str = '"pen pineapple" "apple" "pen" "pen pen"'
let obj = {}
let pattern = /".*?"/g;
let index = ["a","b","c","d","e"]
let i=0
let key
while(current = pattern.exec(str))
{
key = index[i]
obj[key] = current[0].replace('"','')
i++
}
console.log(obj)
你能告诉我们一个坏的方法吗?即使我们能得到一个像-[“pen菠萝”,“苹果”,“pen”,“pen pen”]这样的数组,我也能做剩下的。@T–nNguỹn这就是我目前正在尝试的。但我希望一些人能想出一个捷径。
let str = '"pen pineapple" "apple" "pen" "pen pen"'
let obj = {}
let pattern = /".*?"/g;
let index = ["a","b","c","d","e"]
let i=0
let key
while(current = pattern.exec(str))
{
key = index[i]
obj[key] = current[0].replace('"','')
i++
}
console.log(obj)