regex 正确地将字符串拆分为数组的数组

w6mmgewl  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(156)

我有一个字符串,看起来像:

const msg = " [['robot_arm', 'bc1', 'p_09_04_00'], ['operator', 'lc1', 'p_09_15_00'], ['robot_arm', 'oc1', 'p_08_17_00']]"

而我想把它拆分成一个由字符串数组组成的数组,我试着把这个字符串拆分成如下的数组:

const msg_obj = new Array(JSON.parse(msg).split("["));
console.log(msg_obj);
for (let act_id in msg_obj) { 
    console.log(msg_obj[act_id]);
}

问题是我在里面得到了不需要的字符/字符串:
1.空字符串""
1.逗号,
1.方括号]
你能告诉我是否有更好的方法把这个字符串拆分成一个字符串数组的数组而不产生不需要的输出吗?提前感谢。

zu0ti5jz

zu0ti5jz1#

问题是单引号不是有效的JSON,在解析之前替换引号可以很容易地得到想要的结果:

const msg = " [['robot_arm', 'bc1', 'p_09_04_00'], ['operator', 'lc1', 'p_09_15_00'], ['robot_arm', 'oc1', 'p_08_17_00']]"

const msg_obj = JSON.parse(msg.trim().replace(new RegExp("'", "g"), "\""));

console.log(msg_obj);
for (let act_id of msg_obj) {
  console.log(act_id);
}
5jvtdoz2

5jvtdoz22#

您的const msg不是有效的json字符串。也许您可以通过以下代码解析此字符串:

const msg = " [['robot_arm', 'bc1', 'p_09_04_00'], ['operator', 'lc1', 'p_09_15_00'], ['robot_arm', 'oc1', 'p_08_17_00']]"

msgArr = msg.split("], [").map(item => {  
    return item.trim().split(",").map(val => {
        return val.trim().replace(/\[|\'/g,'');  
    });  
})

example.png

相关问题