拆分但要尊重逗号名称

时间:2018-08-22 23:11:21

标签: javascript string split fuse

我在编写代码时遇到了一些麻烦。 我有一个需要分隔和分析的单词列表,而不是列中的行。

此代码实际上可以很好地完成此工作。 实际工作方式:

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);

但是,如果中间有一个逗号,例如:Robot先生,它会将逗号视为分隔符,并将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);

然后创建一个未定义的记录,导致我出错。 任何想法如何解决这个问题? 在此先感谢!

1 个答案:

答案 0 :(得分:0)

如果在用逗号将名称连起来之前无法获得名称,则可以使用正则表达式定界符来分割它们。例如,如果只用两个非空白字符隔开逗号就足够了,则可以使用:

.split(/(?<=[^ ,]{3,}), /)

仅当此正则表达式前面至少有3个不匹配', '' '的字符时,此正则表达式才匹配','