我有这个字符串。将字符串拆分为一个对象javascript
'"pen pineapple" apple pen "pen pen"'
有没有把它转换成一个对象的好方式,也应该是这样的:我正在寻找在纯JavaScript的解决方案
{
a: "pen pineapple",
b: "apple",
c: "pen",
d: "pen pen"
}
!
我有这个字符串。将字符串拆分为一个对象javascript
'"pen pineapple" apple pen "pen pen"'
有没有把它转换成一个对象的好方式,也应该是这样的:我正在寻找在纯JavaScript的解决方案
{
a: "pen pineapple",
b: "apple",
c: "pen",
d: "pen pen"
}
!
有引号分割字符串...
https://stackoverflow.com/a/18647776/2725684
然后数组转换成一个对象...
https://stackoverflow.com/a/4215753/2725684
所以,当你把这些问题的答案,它看起来像这样...
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);
您可以使用Split a string by commas but ignore commas within double-quotes using Javascript的改编版本,并使用Number#toString
方法来获取密钥。
var str = '"pen pineapple" apple pen "pen pen"',
arr = str.match(/(".*?"|[^" \s]+)(?=\s* |\s*$)/g),
object = {};
arr.forEach(function (a, i) {
object[(i + 10).toString(36)] = a.replace(/"/g, '');
})
console.log(object);
这可能不是最有效的功能,但确实你需要什么(返回数组)
function splitter(inputString) {
var splitted = inputString.split(' ');
var out = []
var temp = "";
var quoteStarted = false;
for (i = 0; i < splitted.length; i++) {
if (splitted[i].indexOf('"') > -1 && !quoteStarted) {
temp += splitted[i] + " ";
quoteStarted = true;
} else if (quoteStarted && splitted[i].indexOf('"') == -1) {
temp += splitted[i] + " ";
} else if (quoteStarted && splitted[i].indexOf('"') > -1) {
temp += splitted[i];
out.push(temp);
quoteStarted = false;
temp = "";
} else {
out.push(splitted[i])
}
}
return out;
}
你能告诉我们一个'bad'办法做到这一点? –
即使我们可以得到一个类似于[“pen penapple”,“apple”,“pen”,“pen pen”]的数组,我可以完成剩下的工作。 –
@TânNguyễn这就是我目前正在尝试。但我希望有些人会想出一条捷径。 –