Если можно предположить, что этот документ будет всегда хорошо сформировавшийся:
List<KeyValuePair<string, int>> results = new List<KeyValuePair<string, int>>();
foreach (string line in File.ReadAllLines("input.txt"))
{
Match match = Regex.Match(line, @"^\s*{\s*(.*?)\s*;\s*(\d+)\s*}\s*$");
if (match.Success)
{
string s = match.Groups[1].Value;
int i = int.Parse(match.Groups[2].Value);
results.Add(new KeyValuePair<string,int>(s,i));
}
}
foreach (var kvp in results)
Console.WriteLine("{0} ; {1}", kvp.Key, kvp.Value);
Результат:
name1 ; 1
name1 ; 2
name2 ; 3
nameN ; 23
Если name1, name2, ..., Намюр уникален и вы не» t заботиться о заказе, то вы можете предпочесть использовать Dictionary
вместо List
. Если вам действительно нужен массив вместо списка (вы, вероятно, нет), вы можете использовать ToArray()
.
Может ли структура быть рекурсивной? Нужно ли проверять его правильность и обрабатывать возможные ошибки ввода, или вы можете предположить, что он будет хорошо сформирован. Могут ли строки содержать полуколоны, скобки или экранированные кавычки и т. Д.? –
нет - нет плохой ввод возможно. нет необходимости проверки. вы можете предположить, что он будет хорошо сформирован. строки экранированы (например, экранирование браузера). – Rella
Какая версия .Net? – SLaks