如何在 javascript 中将管道分隔的字符串解析为键值对
How Do I Parse a Pipe-Delimited String into Key-Value Pairs in Javascript
我想将以下类型的字符串解析为 Javascript 对象中的键值对:
var stringVar = 'PLNC||0|EOR|<br>SUBD|Pines|1|EOR|<br>CITY|Fort Myers|1|EOR|<br>';
4个大写字母(PLNC,SUBD和CITY)的每个单词都是一个键,而紧接在后面的管道中的单词是值(第一个,对于PLNC,将是未定义的,SUBD的第一个是"Pines",CITY是"Fort Myers")。
请注意,"|枸杞|
' 紧跟在每个键值对之前。
最好的方法是什么?
我刚刚意识到它在技术上是一种带有有趣行尾的 csv 格式。 这样做有限制,因为您的变量值不能包含任何 |或
因为它们是定义字符串结构的标记。 你当然可以逃脱它们。
var stringVar = 'PLNC||0|EOR|<br>SUBD|Pines|1|EOR|<br>CITY|Fort Myers|1|EOR|<br>';
function decodeString(str, variable_sep, line_endings)
{
var result = [];
var lines = str.split(line_endings);
for (var i=0; i<lines.length; i++) {
var line = lines[i];
var variables = line.split(variable_sep);
if (variables.length > 1) {
result[variables[0]] = variables[1];
}
}
return result;
}
var result = decodeString(stringVar, "|", "<br>");
console.log(result);
如果您有下划线(如果您没有,那么只需在他们的网页上打开控制台来尝试一下,因为它们包含下划线:)
然后玩弄一下。 这是您旅程的开始:
_.compact(stringVar.split(/<br>|EOR|'|/))
尝试
function parse(str) {
var str = str.replace(/<br>/gi);
console.log(str);
var arr = str.split('|');
var obj = {};
for (var i=0; i<arr.length; i=i+4) {
var key = arr[i] || '';
var val_1 = arr[i+1] || '';
var val_2 = arr[i+2] || '';
if(key) {
obj[key] = val_1 + ':' + val_2; //or similar
}
}
return obj;
}
演示
这将适用于问题中的特定数据字符串。
它也适用于相同通用格式的其他数据字符串,但依赖于:
-
<br>
在解析之前可丢弃 - 每条记录都是一组由 |(管道)
- 每条记录的第一个元素是键
- 第二个和第三个元素组合形成值
- 第四个元素是可丢弃的。
相关文章:
- 从html标记格式的字符串中提取键值对
- 从字符串javascript中获取键值对
- 将字符串数组转换为键值对对象
- 如何在 javascript 中将管道分隔的字符串解析为键值对
- 来自字符串的 JavaScript 访问键值对
- 如何使用下划线.js编辑具有字符串键值对的对象数组中的字符串
- 如何将 html 放在键值对的字符串中,以便提交到 meteor 中的集合中
- 在对象中指定键时使用字符串's键值对
- JavaScript关联数组-将字符串作为数组键:值对进行传递
- 如何将字符串循环为键值对
- 如何将字符串转换为对象作为键值对
- 在javascript中将字符串拆分为键:值对
- 如何将大字符串对象转换为键/值对块
- 在Javascript和会话存储中对键值对进行字符串化
- 可以在section中使用字符串数组而不是键/值对
- 从字符串解析键/值对
- 我如何分割两个字符串,并使一个键值对在javascript
- 如何将字符串数组转换为对象,以便将这些对象拆分为键值对
- 在Javascript中将键值对操作为字符串
- 如何在字符串中访问Javascript中解析的JSON中的嵌套键值对