[英]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是“松树”,对于CITY是“迈尔斯堡”。)
请注意,“ | EOR |
'紧接在每个键值对之前。
最好的方法是什么?
我只是意识到,从技术上讲,这是具有有趣的行尾的csv格式。 这是有局限性的,因为您的变量值不能包含| 或<br>,因为它们是定义字符串结构的标记。 您当然可以逃脱它们。
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);
尝试
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>
在解析之前可以丢弃
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.