0

我有一个字符串的小问题

da:,de:,en:Henkell Brut Vintage,fr:,nl:,sv:

我需要将此字符串映射到字典,以便键是 before: 和 value 是 after :

我试图将它解析为 a 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

我的另一个想法是将它映射到字典,但这对于这个小字符串来说似乎有点矫枉过正。

任何简单的解决方案,这样我就可以提取指定键的值?

4

2 回答 2

3

怎么样

var dict = input.Split(',').Select(s => s.Split(':')).ToDictionary(a => a[0], a => a[1]);

它当前不是有效的 JSON。如果您可以将其存储为有效的 JSON,则可以让 JSON 解析器为您解析它,这样可以更好地处理值中的逗号和冒号(冒号后面的部分)。

如果您只想存储本地化形式的文本,我建议使用.resx资源文件。

于 2018-06-26T20:33:09.447 回答
0

与 Georges 相同,但不使用 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]);
        }
于 2018-06-26T21:23:06.930 回答