我有一個文本文件,其中每個記錄中的每個字段都是固定寬度的記錄。我的第一種方法是簡單地使用string.Substring()來解析每條記錄。有沒有更好的辦法?從文本文件中讀取固定寬度記錄
例如,該格式可以被描述爲:
<Field1(8)><Field2(16)><Field3(12)>
而且有兩個記錄的示例文件可能看起來像:
SomeData000000000SomeMoreData
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;
是的,我試圖想到一種使用正則表達式的方式,但認爲這是工作的錯誤工具,正如你所說的,矯枉過正。 – 2008-10-02 14:59:24
正則表達式? ^(。{8})(。{16})(。*)$作爲字段的上述定義,假設最後一個字段可能用或不用空格填充。 – Sekhat 2008-10-02 15:01:51