我有以下要解析的字符串
{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}
{field4 =Fijian|field5=English,Fijian}
现在这里有两个字符串,用大括号{}但也可能有N个字符串,第一个字符串的结尾和下一个字符串的开头之间的分隔符无法确定,因为有时它可以用car括起来有时可能会在同一行返回。
我想要的是像field1="17/08/2018"
这样的字段明智的价值,等等。
有人可以帮助我解决这个问题的最佳解决方法吗?
答案 0 :(得分:0)
您正在寻找 regular expression 或正则表达式。具体来说,我认为你正在寻找/field(\d)+=(\w|,|\/)+/g
。
打破这个局面:
field
检查文字field
(\d)+
检查一个或多个数字=
检查文字=
(\w|,|\/)+
检查一个或多个单词字符,逗号或正斜杠g
表示应返回所有匹配项您可以通过在字符串上运行.match()
并将正则表达式作为参数传递来检查:
var string = "{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}";
var string2 = "{field4=Fijian|field5=English,Fijian}";
var regex = /field(\d)+=(\w|,|\/)+/g;
console.log(string.match(regex));
console.log(string2.match(regex));
希望这有帮助! :)
答案 1 :(得分:0)
您可以这样做:
var strOne = "{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}";
var strTwo = "{field4 =Fijian|field5=English,Fijian}";
strOne = strOne.replace("{","");
strOne = strOne.replace("}","");
var strArrayOne = strOne.split("|");
console.log(strArrayOne);
strTwo = strTwo.replace("{","");
strTwo = strTwo.replace("}","");
var strArrayTwo = strTwo.split("|");
console.log(strArrayTwo);

答案 2 :(得分:0)
拆分字符串, reduce 进入field
键值对列表 - 请参阅下面的演示:
var string = `{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}
{field4 =Fijian|field5=English,Fijian}`;
var result = string.replace(/[\n\s]/g, '') // replace newline and space
.split(/}{/) // split the string
.reduce(function(p, c) {
return p.concat(c.replace(/[{}]/g,'').split('|'));
}, []);
console.log(result);

.as-console-wrapper{top:0;max-height:100%!important;}

更简单的解决方案是将}{
替换为|
,然后拆分 - 请参阅下面的演示:
var string = `{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}
{field4 =Fijian|field5=English,Fijian}`;
var result = string.replace(/[\n\s]/g, '') // replace newline and space
.replace(/}{/,'|').replace(/[{}]/g,'')
.split('|');
console.log(result);

.as-console-wrapper{top:0;max-height:100%!important;}