使用JavaScript遍历含分号与逗号的文本并提取键值对
解决字符串拆分与数组存储问题
看起来你需要把格式为名称;值,名称;值,...的字符串拆分成对应的服务名和数值,并存入数组以便在HTML中展示。你的现有代码逻辑存在一些问题,我来帮你修正并给出可行方案:
问题分析
你的原始字符串结构是用逗号分隔多个名称;值对,但你的循环代码:
var rslt = []; for (var i = 0; i < 5; i++) { rslt[i] = s.substr(i, s.indexOf(',')); }
有两个关键问题:
substr的第二个参数是截取长度,不是结束索引,你这里用s.indexOf(',')会一直取第一个逗号的位置,导致截取内容错误。- 固定循环5次不符合实际的键值对数量,无法完整处理所有数据。
解决方案
我们可以分两步拆分字符串,再将结果存入数组:
1. 正确的代码实现
// 先确保你的s变量是正确的目标字符串(修正了变量赋值的写法) var s = "Stop;5,Service;13,Error;21,LINK DOWN;53,Data Incomplete;2,Replication Off;0,LINK DOWN;53"; // 第一步:用逗号拆分所有键值对 var keyValuePairs = s.split(','); var resultArray = []; // 第二步:遍历每个键值对,拆分名称和数值 keyValuePairs.forEach(function(pair) { // 用分号拆分名称和值 var [serviceName, serviceValue] = pair.split(';'); // 如果需要将名称转为小写(如你示例中的"stop"),可以添加toLowerCase() resultArray.push(serviceName.toLowerCase(), serviceValue); }); // 此时resultArray就是你需要的数组,格式为["stop", "5", "service", "13", ...] // 转成空格分隔的字符串用于展示 var displayString = resultArray.join(' '); console.log(displayString); // 输出:stop 5 service 13 error 21 link down 53 data incomplete 2 replication off 0 link down 53
2. 在HTML中展示结果
如果要把结果插入到HTML元素中,只需要获取目标元素并设置内容:
// 假设你有一个id为"service-status"的元素 document.getElementById('service-status').textContent = displayString;
代码说明
split(','):将整个字符串拆分为独立的名称;值元素数组。split(';'):将每个元素拆分为服务名称和对应数值。push():将处理后的名称(可选转小写)和数值依次存入结果数组,保证顺序符合你的需求。join(' '):将数组转为空格分隔的字符串,方便直接展示。
内容的提问来源于stack exchange,提问作者user9704250
相关产品推荐
相关产品推荐

