![](/img/trans.png)
[英]How can I parse a string with double curly brackets, using JavaScript?
[英]Parse string using javascript with N number of curly brackets
我有下面的字符串要解析
{field1=17/08/2017|field2=17/08/2017|field2=17/08/2017|field3=17/08/2017}
{field4 =Fijian|field5=English,Fijian}
現在這里有兩個用大括號{}括起來的字符串,但是也可能有N個字符串,第一個字符串的結尾和下一個字符串的開頭之間的分隔符無法確定,因為有時它可以與某個時間的回車符分開它可能在同一行。
我想要的是按字段取值,例如field1="17/08/2018"
,依此類推。
誰能幫我解析這的最好方法是什么?
您正在尋找正則表達式或regex 。 具體來說,我認為您正在尋找/field(\\d)+=(\\w|,|\\/)+/g
。
分解如下:
field
檢查文字文本field
(\\d)+
檢查1個或多個數字 =
檢查文字=
(\\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));
希望這可以幫助! :)
您可以執行以下操作:
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);
拆分字符串並將其縮減為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;}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.