0

我已经与它战斗了几个小时并承认失败。我编写了一个 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

传入的数据用空格填充,这些空格会有所不同,以保持列完美对齐(由服务器,而不是我)(考虑到 dB 之前的 'AlphaNum' 和 'Int' 中不同数量的字符。

我需要一种方法 - 不一定是正则表达式,当字符串加倍(有时是三倍)时添加 CRLF,保留额外的数据。

由于我已经在请求帮助,所以我最好全力以赴,因为组合解决方案可能会更优雅地实施:

采取上述“问题”,并将其格式化以进入具有四列的数据网格;从上面; 第 1、2、3 和 5 列。您的帮助将不胜感激!

4

1 回答 1

0

据我了解,您与 CRLF 的线条总是相同的大小,对吗?

只需检查每行的大小,如果它比预期的大小长,只需将 CRLF 添加到使用 的行line.Insert(expectedLineSize,"\r\n"),然后您将有一个新行要检查,就这样继续,直到您没有更多的行。

至于第二部分,你有固定大小的列,只需使用Substring

于 2013-08-10T18:16:16.837 回答