如何使用Regex拆分带semi-colon的字符串并转换为目标JSON结构?
字符串转指定JSON结构的解决方案
原始输入与目标需求
输入字符串
"name;SR4;Multi-Temp;Models:C-600M;S-600DE;S-600M"
目标JSON结构
{ "name": "SR4", "type": "Multi-Temp", "Models": [ "C-600M", "S-600DE", "S-600M" ] }
实现方案(无需复杂正则)
不用纠结正则,直接利用字符串固定的结构特征,通过分割+简单处理就能完成转换,步骤如下:
- 先去除字符串首尾的引号,再按分号
;分割成数组,得到:["name", "SR4", "Multi-Temp", "Models:C-600M", "S-600DE", "S-600M"] - 提取固定位置的元素:
- 数组第2个元素(索引1)是
name字段的值 - 数组第3个元素(索引2)是
type字段的值
- 数组第2个元素(索引1)是
- 处理
Models列表:- 数组第4个元素(索引3)包含前缀
Models:,去掉前缀后得到第一个型号 - 数组第5、6个元素(索引4、5)直接作为后续型号,合并成列表
- 数组第4个元素(索引3)包含前缀
代码示例
JavaScript实现
const inputStr = `"name;SR4;Multi-Temp;Models:C-600M;S-600DE;S-600M"`; // 去除首尾引号并分割 const parts = inputStr.slice(1, -1).split(';'); const result = { name: parts[1], type: parts[2], Models: [ parts[3].replace('Models:', ''), parts[4], parts[5] ] }; console.log(JSON.stringify(result, null, 2));
Python实现
import json input_str = '"name;SR4;Multi-Temp;Models:C-600M;S-600DE;S-600M"' # 去除首尾引号并分割 parts = input_str.strip('"').split(';') result = { "name": parts[1], "type": parts[2], "Models": [ parts[3].replace('Models:', ''), parts[4], parts[5] ] } print(json.dumps(result, indent=2))
注意事项
如果后续字符串结构有变动(比如字段顺序调整、型号数量变化),可以调整数组索引或循环处理后续元素,但当前固定结构下,上述方法最简单高效。
内容的提问来源于stack exchange,提问作者Ashik
相关产品推荐
相关产品推荐

