如何将特定格式的字符串正确转换为字符串数组的数组?
解决方法
你的问题核心有两个:一是原始字符串用了单引号,不符合JSON规范;二是错误地在解析后使用split破坏了数组结构。直接按下面的步骤处理就能得到干净的二维数组:
- 修正JSON格式:把字符串里的所有单引号替换成双引号(JSON只允许双引号包裹字符串)
- 直接解析为数组:用
JSON.parse处理修正后的字符串,得到的就是你需要的二维数组
具体代码如下:
const msg = " [['robot_arm', 'bc1', 'p_09_04_00'], ['operator', 'lc1', 'p_09_15_00'], ['robot_arm', 'oc1', 'p_08_17_00']]"; // 去除首尾空格,替换所有单引号为双引号 const validJson = msg.trim().replace(/'/g, '"'); // 直接解析得到二维数组 const arr = JSON.parse(validJson); // 验证输出 console.log(arr); arr.forEach(group => { console.log(group); });
为什么你原来的方法会出现多余内容?
- 原始字符串用单引号,标准
JSON.parse会报错(你可能没注意到这个错误,后续的split操作其实是在错误结果上执行的) - 就算忽略单引号问题,
JSON.parse(msg)已经能得到数组,你再调用split("[")会把数组转成字符串(比如"[['robot_arm',...],...]")再分割,自然会出现空字符串、逗号、方括号这些多余内容。
内容的提问来源于stack exchange,提问作者Bilal
相关产品推荐
相关产品推荐

