我收到这个字符串:
arguments: {[
{ style: "fill: red; stroke-width: 1; stroke: black;" }
]}
我想获取特定属性的值。我已经最终得到了风格的价值。
"fill: red; stroke-width: 1; stroke: black;"
我想将其转换为数组或json,以便我可以搜索密钥。但我不确定该怎么做。
答案 0 :(得分: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.
答案 1 :(得分: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"}
答案 2 :(得分:0)
你实际上可以创建一个元素并将其作为style属性,然后检查一个特定的样式 - 但只要字符串使用split
一致格式良好就可以了。
var styles = arguments[0].style.split(";");
styles.forEach(function (style) {
var pair = style.split(":");
if (pair[0] == "fill") {
pair[1] == "red";
}
});
答案 3 :(得分:0)
要简单地使用键搜索值,您不需要将其转换为对象。这是一个例子:
var str = "fill: red; stroke-width: 1; stroke: black;",
key = "fill";
str.match(new RegExp(key+": "+"([^;]+);"))[1]; //"red"