Извлечь свойства из строки, заданной ключом - PullRequest
0 голосов
/ 26 июня 2018

У меня небольшая проблема со строкой

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

Моя другая идея состояла в том, чтобы сопоставить его со словарем, но это кажется немного излишним для этой крошечной строки.

Любое простое решение, такое, что я могу извлечь значения для указанного ключа?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

То же, что и Жорж без использования 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]);
        }
0 голосов
/ 26 июня 2018

Как насчет

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

В настоящее время JSON недействителен. Если вы можете сохранить его как действительный JSON, вы можете позволить анализатору JSON проанализировать его для вас, что будет лучше обрабатывать такие значения, как запятые и двоеточия в значениях (части после двоеточий).

Если вы просто хотите хранить локализованные формы текста, я предлагаю использовать .resx файлы ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...