我得到這個字符串:如何將字符串轉換爲鍵值json/array?
arguments: {[
{ style: "fill: red; stroke-width: 1; stroke: black;" }
]}
我希望得到特定屬性的值。我已經可以結束風格的價值了。
"fill: red; stroke-width: 1; stroke: black;"
我在想這個轉換爲數組或json,所以我只能搜索關鍵字。但我不確定如何去做。
我得到這個字符串:如何將字符串轉換爲鍵值json/array?
arguments: {[
{ style: "fill: red; stroke-width: 1; stroke: black;" }
]}
我希望得到特定屬性的值。我已經可以結束風格的價值了。
"fill: red; stroke-width: 1; stroke: black;"
我在想這個轉換爲數組或json,所以我只能搜索關鍵字。但我不確定如何去做。
一號線解決方案
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"}
完美運作!謝謝! – gdubs
實際上,您可以創建一個元素並將其設置爲樣式屬性,然後檢查特定樣式 - 但只要字符串格式一致,使用split
就可以工作。
var styles = arguments[0].style.split(";");
styles.forEach(function (style) {
var pair = style.split(":");
if (pair[0] == "fill") {
pair[1] == "red";
}
});
分割字符串成基於;
樣式,然後分裂基於那些:
:
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.
爲了簡單地搜索與關鍵字的值,你不需要把它轉換成一個對象。這裏有一個例子:
var str = "fill: red; stroke-width: 1; stroke: black;",
key = "fill";
str.match(new RegExp(key+": "+"([^;]+);"))[1]; //"red"
你是傳遞樣式屬性還是你從某些來源? – Bharath