当我想在字符处拆分字符串并将其放入数组时,我使用:
var arr = data.split("\n");
但是这次我需要将字符串拆分为不同的字符,并且需要将其存储到2d数组中。 字符串如下:
PMC12365AB
PMC23456AB
PMC34567AB
期望的结果
arr = [
["PMC", "12365", "AB"],
["PMC", "23456", "AB"],
["PMC", "34567", "AB"]
];
任何想法
答案 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);