我的字符串有一个小问题
da:,de:,en:Henkell Brut Vintage,fr:,nl:,sv:
我需要将此字符串映射到字典,以便键是:
之前的键
并且值在:
之后。
我试图将其解析为Jtoken
,所以请查看它是否可以正确序列化,但事实并非如此。
var name = Newtonsoft.Json.Linq.JToken.Parse(da:,de:,en:Henkell Brut Vintage,fr:,nl:,sv:);
然后使用
提取所需的属性name.Value<String>("en").ToString());
但是我似乎无法将字符串解析为Json.Linq.JToken
我的另一个想法是将其映射到字典,但是对于这个很小的字符串似乎有点过高。
有什么简单的解决方案,例如我可以提取指定键的值?
答案 0 :(得分:3)
怎么样
var dict = input.Split(',').Select(s => s.Split(':')).ToDictionary(a => a[0], a => a[1]);
当前不是有效的JSON。如果您可以将其存储为有效的JSON,则可以让JSON解析器为您解析它,这样可以更好地处理值中的逗号和冒号(冒号后面的部分)。
如果您只想存储本地化的文本形式,建议使用.resx
资源文件。
答案 1 :(得分:0)
与不使用Linq的乔治相同
string initial = "da:,de:,en: Henkell Brut Vintage,fr:,nl:,sv:";
string[] comaSplit = initial.Split(',');
Dictionary<string, string> dictionary = new Dictionary<string, string>();
foreach (string split in comaSplit) {
string[] colonSplit = split.Split(':');
dictionary.Add(colonSplit[0], colonSplit[1]);
}