将字符串拆分为对象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)