2014-12-23 186 views
0

我想以高貴的方式這種字符串變換:解析字符串轉換成字典

"{lastname=Oba, firstname=Bar}"

var person = []; 
person["firstName"] = "Bar"; 
person["lastName"] = "Oba"; 

我嘗試用JSON解析,但沒有工作, 我不不知道如何不骯髒splitting

+0

它不是[JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)因此JSON.parse不起作用 – epascarello

+0

最上面的項目只是一個字符串,它不是JSON,因此JSON.parse不起作用 – TommyBs

+0

確定它不是JSON,但它有一個簡單的解析器嗎? – gregouille

回答

0

這段代碼應該很容易解析這個。

function myParser(str) { 
    return str.slice(1, -1).split(',').map(function(el) { 
     return el.trim() 
    }).map(function(el) { 
     return el.split('=') 
    }).reduce(function(result, pair) { 
     result[pair[0].trim()] = pair[1].trim(); 
     return result 
    }, {}); 
} 

它會如預期僅小羣屬性和DATAS的,但搞清楚這些情況下,修復該行爲是闊葉鍛鍊的讀者。

+0

whao真的很好,謝謝 – gregouille

0

算法:
分裂的條紋

的Python

s = "{lastname=Oba, firstname=Bar}" 

l = s[1:-1].split(",") 
d = {} 
for e in l: 
    a = e.split("=") 
    d[a[0].strip()] = a[1].strip() 

 

的JavaScript

:由 ,克你會得到 A=B對列表,然後通過 =和形式字典拆分每個對名單
var s = "{lastname=Oba, firstname=Bar}"; 

var l = s.slice(1,-1).split(','); 
var d = {}; 
for (var i in l) { 
    var a = l[i].split('='); 
    d[a[0].trim()] = a[1].trim(); 
}