2012-04-02 3 views
0

У меня есть список, который я хочу отобразить в моей форме. Но сначала я хочу переместить всю не относящуюся к делу часть. Это мой список:Простейший способ разобрать эту таблицу:

=================================================================== 
Protocol Hierarchy Statistics 
Filter: 

eth          frames:8753 bytes:6185473 
    ip          frames:8753 bytes:6185473 
    tcp         frames:8661 bytes:6166313 
     http        frames:1230 bytes:792126 
     data-text-lines     frames:114 bytes:82636 
      tcp.segments     frames:56 bytes:41270 
     image-gif      frames:174 bytes:109968 
      tcp.segments     frames:57 bytes:37479 
     image-jfif      frames:195 bytes:154407 
      tcp.segments     frames:185 bytes:142340 
     png        frames:35 bytes:30521 
      tcp.segments     frames:20 bytes:15770 
     media       frames:39 bytes:32514 
      tcp.segments     frames:32 bytes:24755 
     tcp.segments      frames:6 bytes:1801 
     xml        frames:5 bytes:3061 
      tcp.segments     frames:1 bytes:960 
     ssl        frames:20 bytes:14610 
    udp         frames:92 bytes:19160 
     dns        frames:92 bytes:19160 
=================================================================== 

Я хочу, чтобы отобразить первый столбец (тип протокола), а во втором столбце только часть после «кадров:» без байтов: хххх

ответ

1

Вероятно, с помощью Regex, что-то вместе линии:

Regex rgx = new Regex(@"^(?<protocol>[ a-zA-Z0-9\-\.]*)frames:(?<frameCount>[0-9]).*$"); 
    foreach (Match match in rgx.Matches(myListOfProtocolsAsAString)) 
    { 
     if(match.Success) 
     { 
     string protocol = match.Groups[1].Value; 
     int byteCount = Int32.Parse(match.Groups[2].Value); 
     } 
    } 

Затем вы можете получить доступ к соответствующим группам (протокол & FrameCount) на экземпляре Match.

+0

я получил ошибку в команде Еогеаспа: «Невозможно преобразовать тип„System.Collections.Generic.List “на„строки“с помощью эталонного преобразования, преобразование бокса, преобразование для распаковки, конвертирование конверсий или преобразование нулевого типа " – user979033

+0

@ user979033: Я думаю, что я обновил свой ответ с тех пор? либо это, либо myListOfProtocolsAsAString - это список , а не строка. Если это так, используйте StringBuilder, чтобы объединить их все, или запустите Regex за несколько раз rgx.Match для каждой строки, а не громоздким способом. – Ian

1

Используя весь популярную Linq к объектам

var lines = new string[] 
    { 
    "eth         frames:8753 bytes:6185473", 
    "ip          frames:8753 bytes:6185473" 
    }; 

var values = lines.Select(
    line=>line.Split(new string[]{"frames:", "bytes:"}, StringSplitOptions.None)) 
    .Select (items => new {Name=items[0].Trim(), Value=items[1].Trim()});