gpt4 book ai didi

c# - 从文本文件中读取固定宽度的记录

转载 作者:IT王子 更新时间:2023-10-29 04:46:45 26 4
gpt4 key购买 nike

我有一个充满记录的文本文件,其中每条记录中的每个字段都是固定宽度。我的第一种方法是简单地使用 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;

最佳答案

使用FileHelpers .

例子:

[FixedLengthRecord()] 
public class MyData
{
[FieldFixedLength(8)]
public string someData;

[FieldFixedLength(16)]
public int SomeNumber;

[FieldFixedLength(12)]
[FieldTrim(TrimMode.Right)]
public string someMoreData;
}

那么,就这么简单:

var engine = new FileHelperEngine<MyData>(); 

// To Read Use:
var res = engine.ReadFile("FileIn.txt");

// To Write Use:
engine.WriteFile("FileOut.txt", res);

关于c# - 从文本文件中读取固定宽度的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com