JavaScript 数组字符串转换Json格式
//滔Roy 2023.04.13 function parseStringToArray(str) { // 尝试将字符串解析为 JSON 格式 try { const arr = JSON.parse(str); // 如果解析成功,则直接返回解析结果 if (Array.isArray(arr)) { return arr; } } catch (e) {} // 如果解析失败,则按逗号 `,` 分割字符串,并转换为数字或字符串数组 const arr = str .replace(/[^\d.,\u4e00-\u9fa5]/g, '') // 去除非数字、非逗号、非句点、非中文字符的字符 .split(',') .map(s => { const n = Number(s.trim()); // 尝试将字符串转换为数字 if (!isNaN(n)) { // 如果转换成功,则返回数字 return n; } else { // 如果转换失败,则返回字符串 return s.trim(); } }); return arr; }
以上代码的部分说明:
- Unicode 编码范围
\u4e00-\u9fa5
来匹配中文字符。这样,即使控制台不支持中文字符,也能够正常输出 Unicode 编码。 - 使用正则表达式
/[^\d.,]/g
将输入字符串中的非数字、非逗号、非句点的字符去除,然后再将处理后的字符串按逗号分割,并转换为数字数组。这样就能够处理包含中文字符的输入字符串,并且不会出现空白输出的问题。
支持转换的格式有(示例):
// 转换为第一种格式 const inputString1 = "32周,33周,34周,35周,36周,37周,38周"; //或者'32周', '33周', '34周', '35周', '36周', '37周', '38周' const outputArray1 = parseStringToArray(inputString1); console.log(outputArray1); // ['32周', '33周', '34周', '35周', '36周', '37周', '38周'] // 转换为第二种格式 const inputString2 = "120, 132, 101, 134, 90, 230, 210"; const outputArray2 = parseStringToArray(inputString2); console.log(outputArray2); // [120, 132, 101, 134, 90, 230, 210]
创建时间:2023.04.13 更新时间:
标签:字符,arr,转换,JavaScript,Json,格式,字符串,const From: https://www.cnblogs.com/guorongtao/p/17312157.html