2014-07-02 76 views
0

我得到這個字符串:如何將字符串轉換爲鍵值json/array?

arguments: {[ 

    { style: "fill: red; stroke-width: 1; stroke: black;" } 
]} 

我希望得到特定屬性的值。我已經可以結束風格的價值了。

"fill: red; stroke-width: 1; stroke: black;" 

我在想這個轉換爲數組或json,所以我只能搜索關鍵字。但我不確定如何去做。

+0

你是傳遞樣式屬性還是你從某些來源? – Bharath

回答

2

一號線解決方案

var s="fill: red; stroke-width: 1; stroke: black;"; 
var dict = {} 
s.split(";").map(function (e){ if (e) {var parts = e.split(":"); dict[parts[0].trim()] = parts[1].trim() }}) 
//dict = {fill: "red", stroke-width: "1", stroke: "black"} 
+0

完美運作!謝謝! – gdubs

0

實際上,您可以創建一個元素並將其設置爲樣式屬性,然後檢查特定樣式 - 但只要字符串格式一致,使用split就可以工作。

var styles = arguments[0].style.split(";"); 
styles.forEach(function (style) { 
    var pair = style.split(":"); 
    if (pair[0] == "fill") { 
     pair[1] == "red"; 
    } 
}); 
2

分割字符串成基於;樣式,然後分裂基於那些:

var ss = "fill: red; stroke-width: 1; stroke: black;"; 
var styles = {}; 

var parts = ss.split(/\s*;\s*/); 

for (var i = 0; i < parts.length; ++i) 
    { 
    var vv = parts[i].split(/\s*:\s*/); 

    if (vv.length == 2) 
     styles[vv[0]] = vv[1]; 
    } 

之後,styles將包含:

{ 
    'fill': 'red', 
    'stroke': 'black', 
    'stroke-width': '1' 
} 

而且可以訪問如:

console.log(styles['fill']); // etc. 
0

爲了簡單地搜索與關鍵字的值,你不需要把它轉換成一個對象。這裏有一個例子:

var str = "fill: red; stroke-width: 1; stroke: black;", 
    key = "fill"; 

str.match(new RegExp(key+": "+"([^;]+);"))[1]; //"red" 
相關問題