2013-08-10 2 views
0

Я боролся с ним часами и признал поражение. Я закодирован С # Win Forms клиента, который принимает данные Telnet в следующем формате:Регулярная головная боль, форматирование строк, datagrid

Decimal AlphaNum  Int "dB" Int "WPM" AN   Int + "Z" 
14048.4 XY3CVI   19 dB 29 WPM    1700Z 
14092.6 XY3CVI   19 dB 29 WPM XZ   1700Z 

Периодически из-за узкое место выше по потоку я получаю «двойной хит» без CRLF.

14048.4 XY3CVI   19 dB 29 WPM    1700Z14048.4 XY3CVI   19 dB 29 WPM    1700Z 

Поступающие данные дополняются пробелами которые изменяются для того, чтобы сохранить столбцы выровненных отлично (на сервере, а не я) (с учетом изменения количества символов в «AlphaNum» и «Int», который предшествует дБ .

мне нужно средство - не обязательно регулярное выражение, чтобы добавить CRLF, когда строка приходит в два раза вверх (иногда в три раза), сохраняя при этом дополнительные данные

Так как я уже умолял о помощи я». так же, как и весь свиньи, так как вполне вероятно, что комбинированное решение будет более изящным для реализации как одно:

Чтобы выполнить вышеуказанную «проблему» и отформатировать ее для ввода в datagrid с четырьмя столбцами; из приведенного выше; столбцы 1, 2, 3 и 5. Ваша помощь будет принята с благодарностью!

+0

'из-за восходящего bottleneck' ?? – I4V

ответ

0

Насколько я понимаю, ваши линии с CRLF всегда одинакового размера?

Просто проверьте размер каждой строки, если она длиннее ожидаемого размера, просто добавьте CRLF в строку, используя line.Insert(expectedLineSize,"\r\n"), после чего у вас будет новая строка для проверки, просто продолжайте так, пока вы не имеют больше линий.

Что касается второй части, вы закрепили столбцы размера, просто использовать Substring

Смежные вопросы