我有一个充满记录的文本文件,其中每条记录中的每个字段都是固定宽度。我的第一种方法是简单地使用 string.Substring() 解析每条记录。有没有更好的办法?
例如,格式可以描述为:
<Field1(8)><Field2(16)><Field3(12)>
一个包含两条记录的示例文件可能如下所示:
SomeData0000000000123456SomeMoreData
Data2 0000000000555555MoreData
我只是想确保我没有忽略比 Substring() 更优雅的方式。
更新: 我最终使用了 Killersponge 建议的正则表达式:
private readonly Regex reLot = new Regex(REGEX_LOT, RegexOptions.Compiled);
const string REGEX_LOT = "^(?<Field1>.{6})" +
"(?<Field2>.{16})" +
"(?<Field3>.{12})";
然后我使用以下内容访问这些字段:
Match match = reLot.Match(record);
string field1 = match.Groups["Field1"].Value;