我想解析 SVG 样式属性,它只是一个分隔字符串,例如
“填充:#e2b126;描边:#010101;描边宽度:0.3177;描边斜接限制:10”
into a Dictionary<string,string>
这样我就可以对其进行一些处理。
这是我所拥有的,它可以完成这项工作,但我想使用 linq 投影使其更整洁,只是似乎无法获取语法。我尝试使用 .Select().ToDictionary 等,但没有乐趣。谢谢:
string attributes = "fill:#e2b126;stroke:#010101;stroke-width:0.3177;stroke-miterlimit:10";
var pairs = attributes.Split(';').ToList();
var dic = new Dictionary<string, string>();
pairs.ForEach(p =>
{
var pair = p.Split(':');
dic.Add(pair[0], pair[1]);
});
foreach (var k in dic.Keys)
{
Console.WriteLine(k + " " + dic[k]);
}
预期输出:
fill #e2b126
stroke #010101
stroke-width 0.3177
stroke-miterlimit 10
尝试以下操作
string attributes = "fill:#e2b126;stroke:#010101;stroke-width:0.3177;stroke-miterlimit:10";
var map = attributes
.Split(new []{';'}, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split(new []{':'}, StringSplitOptions.RemoveEmptyEntries))
.ToDictionary(p => p[0], p => p[1]);
分解
首先Split
调用将返回一个数组String
每个条目所在的值key:value
格式。下列Select
调用会将这些条目中的每一个转换为string[]
其中第一个元素是键,第二个元素是值。这ToDictionary
调用只是明确执行此映射
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)