Головная боль Regex, форматирование строк, сетка данных

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

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, когда строка удваивается (иногда утраивается), сохраняя дополнительные данные.

Поскольку я уже умоляю о помощи, я бы с таким же успехом пошел на все, так как, скорее всего, комбинированное решение будет более элегантным для реализации как единое целое:

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

1 ответ

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

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

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

Другие вопросы по тегам