簡體   English   中英

循環字符串獲取鍵和值使用正則表達式鍵匹配Javascript

[英]Loop through string get key and value using regex key matches Javascript

我有一個字符串

> var temp =
> "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green),"

有關信息,此字符串由kibana自動生成(我通過url恢復)。

我的問題是:有任何解決方案從這個字符串中提取鍵和值,並在數組或對象中得到一個結果,如下所示:

>  var result = { 
>                  "alias" : "!n",
>                  "apply" : "!t",
>                  "disabled" : "!f",
>                  "key": "stockInfo.raw",
>                  "negate": "!f",
>                  "value": "green",  
>               }

謝謝

我想你正在搜索這樣的東西:

 var meta = "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)," var result = {} meta.substr(0, meta.length - 2).substr(5).split(',').forEach(function(item) { var split = item && item.split(':') if (split.length) { result[split[0]] = split[1]; } }) console.log(result) 

通過拆分字符串,字符,然后通過拆分:識別對象的key和value

與其他相同,但有一些es6語法:D

 const result = document.getElementById("result"); const input = document.getElementById("input"); // string: data from url, return only the portion from the parenthesis const extract_meta_values = string => { const EXTRACTOR = /^meta\\(([^\\)]+)\\)/g; return EXTRACTOR.exec(string)[1]; } // string: is a string of key:values separated by a comma const meta_values_to_array_of_objects = string => string.split(',').map( tuple => { const [key, value] = tuple.split(':'); return { [key]: value }; }); const meta_values = extract_meta_values(input.value); const final = meta_values_to_array_of_objects(meta_values); // print out result.innerText = JSON.stringify(final, null, 2); 
 pre { display: block; border: 1px solid darkgray; } 
 <p> <input value="meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)," id=input /> </p> <pre id=result></pre> 

子串到括號內,用逗號分割,循環,用冒號分割並添加到對象。

 var temp = "meta(alias:!n,apply:!t,disabled:!f,index:'index_*',key:stockInfo.raw,negate:!f,value:green)"; var t = {}; temp .substr(temp.indexOf("(") + 1, temp.indexOf(")") - temp.indexOf("(") - 1) .split(",") .forEach(function(a) { var b = a.split(":"); t[b[0]] = b[1]; }); console.log(t); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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