Парсинг строки на c# через :

Есть строка вида "1:String1:2:2:3:String3:4:String4" Эту строку нужно распарсить в

string 1 = String1
int 2 = 2
string 3 = String3
string 4 = String4

Как это можно реализовать на c#?

UPD: количество и тип каждого значения заранее известен


Ответы (1 шт):

Автор решения: aepot

Для пар ключ-значение можно использовать словарь

static void Main(string[] args)
{
    Dictionary<int, string> dictionary = new Dictionary<int, string>();
    string text = "1:String1:2:2:3:String3:4:String4";
    string[] values = text.Split(':');
    for (int i = 0; i < values.Length - 1; i += 2)
    {
        if (int.TryParse(values[i], out int index))
            dictionary.Add(index, values[i + 1]);
    }

    foreach (KeyValuePair<int, string> pair in dictionary)
    {
        bool isInt = int.TryParse(pair.Value, out _);
        Console.WriteLine("{0} {1} = {2}", isInt ? "int" : "string", pair.Key, pair.Value);
    }
    Console.ReadKey();
}

Вывод в консоль

string 1 = String1
int 2 = 2
string 3 = String3
string 4 = String4
→ Ссылка