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  更新时间:

  

posted on 2023-04-13 09:07  滔Roy  阅读(559)  评论(0编辑  收藏  举报

导航