拆分但尊重逗号名称
Split but respect comma names
我的代码有点问题。
我有一个需要分隔和解析的单词列表,而不是列中的行。
这段代码实际上工作得很好并且可以完成这项工作。
实际效果如何:
const Obj = {
"0":"Mario, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
但是,如果任何名称在中间示例中有一个逗号:Mr, Robot,它会将逗号视为分隔符,并将 Mr, Robot 一分为二,而不是一分为二。
示例:
const Obj = {
"0":"Mr, Robot, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
然后它创建了一个导致我出错的未定义记录。
知道如何解决这个问题吗?
提前致谢!!
如果您在用逗号连接之前无法获取名称,您可以使用正则表达式分隔符将它们分开。例如,如果不在前面只有两个非空白字符的逗号处拆分就足够了,您可以使用:
.split(/(?<=[^ ,]{3,}), /)
仅当此正则表达式前面有至少 3 个不匹配 ' '
或 ','
.
的字符时,它才会匹配 ', '
我的代码有点问题。 我有一个需要分隔和解析的单词列表,而不是列中的行。
这段代码实际上工作得很好并且可以完成这项工作。 实际效果如何:
const Obj = {
"0":"Mario, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
但是,如果任何名称在中间示例中有一个逗号:Mr, Robot,它会将逗号视为分隔符,并将 Mr, Robot 一分为二,而不是一分为二。
示例:
const Obj = {
"0":"Mr, Robot, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
然后它创建了一个导致我出错的未定义记录。 知道如何解决这个问题吗? 提前致谢!!
如果您在用逗号连接之前无法获取名称,您可以使用正则表达式分隔符将它们分开。例如,如果不在前面只有两个非空白字符的逗号处拆分就足够了,您可以使用:
.split(/(?<=[^ ,]{3,}), /)
仅当此正则表达式前面有至少 3 个不匹配 ' '
或 ','
.
', '