Десериализация строки

443
22 мая 2017, 23:50

Здравствуйте! Подскажите как десериализовать строку типа

{property(field1=value, field2=value, field3=value, field4=value, ...)}

Именно без кавычек и field всегда различны

Answer 1

Честно говоря, имея такую строку не вижу смысла даже парсить регексом.

Просто чекаем строку на начало/конец и стартуем создавать словарь...

public IDictionary<string, string> Parse(string propertyName, string dataString)
{
    string startsWith = $"{{{propertyName}(";
    const string endsWith = ")}";
    if (!dataString.StartsWith(startsWith) || !dataString.EndsWith(endsWith))
    {
        throw new ArgumentException(nameof(dataString));
    }
    dataString = dataString.Substring(startsWith.Length, dataString.Length - startsWith.Length - endsWith.Length);
    var dict = dataString
        .Split(',')
        .Select(kv => kv.Trim().Split('='))
        .ToDictionary(kv => kv.ElementAtOrDefault(0), kv => kv.ElementAtOrDefault(1));
    return dict;
}

Тестить!

READ ALSO
Один класс для двух форм

Один класс для двух форм

Можно ли сделать так чтобы Form1 и From2 ссылались на один класс? Изначально была только Form1, после добавилась From2 с почти теми же функциями что...

234
EF и превышение длины строки

EF и превышение длины строки

Я создал модель данных DataBase-First, при этом в базе данных есть поля на подобии varchar(150)В классе же такие поля выглядят как просто string

300
C#, OpenXML, формула IF

C#, OpenXML, формула IF

Для создания файла Excel использую OpenXMLВ файле Excel нужна формула IF(

299
Конвертирование памяти для видеокарты

Конвертирование памяти для видеокарты

Есть ли более оригинальных способ вывести для каждой видеокарты свой объём памяти?

397