如何在Javascript中将管道分隔字符串解析为键值对
我想将以下类型的字符串解析为Javascript对象中的键值对:如何在Javascript中将管道分隔字符串解析为键值对,javascript,jquery,parsing,javascript-objects,Javascript,Jquery,Parsing,Javascript Objects,我想将以下类型的字符串解析为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” 请注意,“| EOR |”
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”
请注意,“| EOR |”紧跟在每个键值对之前
做这件事的最好方法是什么?如果你有,如果你没有,那么在他们的网页上打开你的控制台试试看,因为他们已经包括了下划线:
然后玩一玩。以下是您旅程的开始:
_.compact(stringVar.split(/<br>|EOR|\|/))
试一试
这将对问题中的特定数据字符串起作用
它还可以处理相同通用格式的其他数据字符串,但依赖于:
在解析之前是可丢弃的
每个记录是一组由|管道描绘的4个字符串元素
每个记录的第一个元素是键
第二和第三要素结合形成价值
第四个元素是可丢弃的。
我刚刚意识到,从技术上讲,它是一种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);
不简单。你似乎有很多额外的管道。是的,这是我在尝试使用它时遇到的问题之一。按|分解,然后用reg exp循环通过它们
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);