簡體   English   中英

使用帶有N個大括號的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM