将不同字符的字符串拆分为2d数组

时间:2017-06-07 13:02:11

标签: javascript jquery arrays string

当我想在字符处拆分字符串并将其放入数组时,我使用:

var arr = data.split("\n");

但是这次我需要将字符串拆分为不同的字符,并且需要将其存储到2d数组中。 字符串如下:

PMC12365AB       
PMC23456AB
PMC34567AB

期望的结果

arr = [
    ["PMC", "12365", "AB"],
    ["PMC", "23456", "AB"],
    ["PMC", "34567", "AB"]
];

任何想法

2 个答案:

答案 0 :(得分:3)

var input = "PMC12365AB\nPMC23456AB\nPMC34567AB";
var output = input.split('\n').map(function(line)
{
    var a = line.match(/^(...)(.....)(..)$/);
    a.shift();
    return a;
});

显然,正确的正则表达式取决于你想要如何剪切每一行,不确定它们是固定宽度,还是基于字母与数字......

答案 1 :(得分:2)

我不会使用正则表达式来完成这项工作。如果您已经确定文本格式的模式(如n个字母 - m个数字 - k个字母),那么您可以简单地使用标准的JS字符串操作,如substr。但是,如果您想对此代码提供一些智能,那么您仍然可以通过不触及regexp来实现。

var input  = "PMC12365AB\nPMCX2347756AB\nPMC34567ABCT0123";
    result = input.split("\n")
                  .map(s => [].reduce.call(s, (p,c) => isNaN(p[p.length-1]) === isNaN(c) ? p + c : p + "_" + c).split("_"));
console.log(result);