Головная боль 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")
у вас появится новая строка для проверки, просто продолжайте так до тех пор, пока у вас не останется больше строк.
Что касается второй части, у вас есть фиксированный размер столбцов, просто используйте подстроку