我正在尝试解析格式化为列的文本报告。每列似乎都以固定长度右对齐。对于每一行,有时并非所有列都被使用。在这种情况下,似乎使用空格来证明行中的每一列。示例输入:
031 91 1221,154
043 66 312,222 1 3,047 3,047 1.5% .9%
040 118 529,626 1 1,842 1,842 .8% .3%
037 45 427,710
019 80 512,153 1 14,685 14,685 1.2% 2.8%
009 68 520,301 1 16,085 16,085 1.4% 3.0%
030 13 106,689 1 1,581 1,581 7.6% 1.4%
008 54 377,593 1 7,098 7,098 1.8% 1.8%
018 24 171,264
022 25 8,884 1 433 433 4.0% 4.8%
035 9 42,043
041 13 112,355
列宽如下(包括空格在内的字符数):3,5,12,6,10,7,10,11,8,7。
什么是解析这个的好方法?我曾尝试使用正则表达式来执行此操作,但它显然在读入的第一行失败,因为我使用的表达式希望整行都有数据:
字符串模式 = @"^(?.{3})(?.{5})(?.{12})(?thirtyeightyninenumber>.{6})(?{10})(?.{7}(? .{10})(?.{11})(?.{8})(?.{7})";
根据该列是否有数据,寻找一种将其读入适当变量的好方法。我觉得我需要投入大量if
支票,但我希望有一个我没有想到的更好的方法。
谢谢你的帮助。
顺便说一句 - 我正在使用 StreamReader 和 ReadLine 读取行。