如何在Javascript中将无引号UUID组成的字符串转为数组?
问题分析与解决方法
报错原因
你提供的字符串不符合JSON语法规范:
- JSON要求字符串必须用双引号包裹,而你的字符串外层是单引号
- 数组内的UUID属于字符串类型,必须用双引号包裹,你的字符串里没有给这些UUID加引号
这两个问题导致JSON.parse()无法解析,直接抛出语法错误。
解决方案
方法1:修正为合法JSON后解析
先处理原始字符串,将其转换为合法JSON格式,再用JSON.parse()解析:
// 原始带外层单引号的字符串 const rawStr = "'[b426be49-0621-4240-821f-79bddf378e1e,c9e41cbb-b0d5-4833-bf72-0bf79ca31dcf]'"; // 步骤1:去掉外层的单引号 const innerStr = rawStr.slice(1, -1); // 步骤2:给每个UUID添加双引号(匹配36位UUID格式) const validJsonStr = innerStr.replace(/([0-9a-f-]{36})/g, '"$1"'); // 步骤3:解析为数组 const resultArr = JSON.parse(validJsonStr); console.log(resultArr); // 输出:["b426be49-0621-4240-821f-79bddf378e1e", "c9e41cbb-b0d5-4833-bf72-0bf79ca31dcf"]
方法2:直接分割字符串(无需JSON.parse)
如果不需要严格遵循JSON解析,也可以直接通过字符串操作提取数组元素:
const rawStr = "'[b426be49-0621-4240-821f-79bddf378e1e,c9e41cbb-b0d5-4833-bf72-0bf79ca31dcf]'"; // 去掉外层单引号和首尾的[] const content = rawStr.slice(2, -2); // 按逗号分割成数组 const resultArr = content.split(','); console.log(resultArr); // 输出:["b426be49-0621-4240-821f-79bddf378e1e", "c9e41cbb-b0d5-4833-bf72-0bf79ca31dcf"]
内容的提问来源于stack exchange,提问作者roqkabel
相关产品推荐
相关产品推荐

