如何将文本文件/字符串转换为JavaScript键值对对象
实现方案
核心处理逻辑分4步:
- 先对原始字符串做拆分,按逗号切割成独立片段
- 过滤掉开头不带等号的操作标识片段(即
NGGCVS3.scratch1.create段) - 对剩余带等号的片段,按等号切割出键名和值,去掉值两端包裹的双引号
- 按需提取目标字段(pin、scnum、senum)组装成最终对象,不需要的字段直接丢弃即可
完整可运行代码
// 原始输入字符串 const textFile = "NGGCVS3.scratch1.create,end_date=\"07/03/2025\",pin=\"31742\",scnum=\"2736289877\",senum=\"250322602004999\",SCRPREF=\"500\",SUSP_F=\"0\""; function parseTargetStr(str) { const tempKV = {}; // 按逗号拆分所有片段 const segList = str.split(','); for (const seg of segList) { // 跳过无等号的非键值对片段 if (seg.indexOf('=') === -1) continue; // 拆分键、值,处理值两端的引号 const splitIdx = seg.indexOf('='); const key = seg.slice(0, splitIdx).trim(); const value = seg.slice(splitIdx + 1).replaceAll('"', ''); tempKV[key] = value; } // 返回需要的字段,格式和要求完全匹配 return { pin: tempKV.pin, scnum: tempKV.scnum, senum: tempKV.senum } } // 生成目标对象 const object = parseTargetStr(textFile);
运行后object的输出和预期格式完全一致:
{ pin: '31742', scnum: '2736289877', senum: '250322602004999' }
适配场景说明
- 如果是读取本地文本文件的场景,先通过对应环境的文件读取方法拿到文本内容(Node.js用
fs模块,浏览器端用FileReader),再传入parseTargetStr方法处理即可 - 如果后续需要保留所有解析出来的键值对,直接返回
tempKV对象即可,不需要做字段筛选 - 如果后续值内容中出现逗号、等号类特殊字符,把拆分逻辑替换为正则匹配
/(\w+)="([^"]+)"/g做全局匹配即可,当前实现针对给出的固定格式场景性能更高、逻辑更简单
内容的提问来源于stack exchange,提问作者George Wisdom
相关产品推荐
相关产品推荐

