代码之家  ›  专栏  ›  技术社区  ›  Bilal

将字符串正确拆分为数组

  •  1
  • Bilal  · 技术社区  · 3 年前

    我有一根绳子,看起来像:

    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. 空字符串 "" .
    2. 逗号 , .
    3. 方括号 ] .

    你能告诉我是否有更好的方法将这个字符串分割成一个字符串数组,而不会产生不需要的输出吗?提前谢谢。

    2 回复  |  直到 3 年前
        1
  •  2
  •   adiga    3 年前

    问题是您的单引号不是有效的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);
    }
        2
  •  0
  •   hiwangyt    3 年前

    你的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

    推荐文章