JavaScript 数组字符串转换Json格式
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 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!