«Для чего-то полезного» означает для меня, что ваш первый шаг - создать классы, структуры и перечисления, которые представляют ваши данные:
public class RouterEntry
{
public ConnectionState ConnectionState { get; }
public int Retry { get; }
...
public long BytesTX { get; }
}
Затем начните думать о том, как проанализировать строки результата. Я бы, вероятно, написал метод Deserialize(StringReader)
(или что-то в том же духе), чтобы ваш объект анализировал данные построчно.
Вы также можете использовать string.Split
с перегрузкой SplitOptions, чтобы помочь вам игнорировать любые пробелы.
Так, например, если вы используете
Port: OBC PortNr: 0 PortState: forwarding Interface: up
в качестве строки ввода и
char[] delims = new char[] { ':', ' ' };
как ваши разделители, затем называете это так
string[] tokens = line.Split(delims, StringSplitOptions.RemoveEmptyEntries);
приведет к tokens
, содержащему
[Port, OBC, PortNr, 0, PortState, forwarding, Interface, up]
Для строк, которые имеют несколько «значений» для ключа (например, Regeneration table: 0 1 2 3...
, вы просто должны учитывать тот факт, что каждое из этих значений будет отдельной строкой в массиве токенов).
Ключ в том, что если вы разберете свою проблему один раз за раз, она станет более управляемой.