我有一个文本字符串,通过该字符串我想使用库跳过“ *”定界符内的空格。我发现的问题是,当出现“ **”时,它将它作为一行,而不应该这样。
文本:
ISA*00**00**09*005070479TMAN*01*FBLP*190305*2029**00405*000033241*0*
我得到的是什么:
auth_inf_qua;sec_inf_qua;inter_id_qua;inter_sender_id;inter__id_qua2;inter_reciev_id;date_isa;hour_date;inter_cntrlver_num;inter_ctrol_num;ackn_rqstd
00;;00;;09;005070479TMAN;01;FBLP;190305;2029;00405
我尝试过:
csv.Configuration.ShouldSkipRecord = row => row.All( string.IsNullOrWhiteSpace );
C#
using (var reader = new StreamReader(texto))
using (var csv = new CsvReader(reader))
{
//which configuration I should use
csv.Configuration.HasHeaderRecord = false;
csv.Configuration.Delimiter = "*";
csv.Context.ReaderConfiguration.;
csv.Configuration.RegisterClassMap<IsaMap>();
;
var IsaRecords = new List<isa>();
while (csv.Read())
{// maybe a condition
switch (csv.GetField(0))
{
case "ISA":
IsaRecords.Add(csv.GetRecord<isa>());
break;
default:
throw new InvalidOperationException("Unknown record type.");
}
}
using (var writer = new StreamWriter(rutasal))
using (var csv2 = new CsvWriter(writer))
{
csv2.WriteRecords(IsaRecords);
}
}
}
public class isa
{
public string auth_inf_qua { get; set; }
public string sec_inf_qua { get; set; }
public string inter_id_qua { get; set; }
public string inter_sender_id { get; set; }
public string inter__id_qua2 { get; set; }
public string inter_reciev_id { get; set; }
public string date_isa { get; set; }
public string hour_date { get; set; }
public string inter_cntrlver_num { get; set; }
public string inter_ctrol_num { get; set; }
public string ackn_rqstd { get; set; }
}
public sealed class IsaMap : ClassMap<isa>
{
public IsaMap()
{
Map(m => m.auth_inf_qua).Index(1);
Map(m => m.sec_inf_qua).Index(2);
Map(m => m.inter_id_qua).Index(3);
Map(m => m.inter_sender_id).Index(4);
Map(m => m.inter__id_qua2).Index(5);
Map(m => m.inter_reciev_id).Index(6);
Map(m => m.date_isa).Index(7);
Map(m => m.hour_date).Index(8);
Map(m => m.inter_cntrlver_num).Index(9);
Map(m => m.inter_ctrol_num).Index(10);
Map(m => m.ackn_rqstd).Index(11);
}
}
}
我想要得到什么:
auth_inf_qua;sec_inf_qua;inter_id_qua;inter_sender_id;inter__id_qua2;inter_reciev_id;date_isa;hour_date;inter_cntrlver_num;inter_ctrol_num;ackn_rqstd
00;00;09;005070479TMAN;01;FBLP;190305;2029;U;00405;000033241;0
答案 0 :(得分:0)
您正在尝试跳过空白字段,而不是空白行。如果知道字段的位置,则可以在Index()
的{{1}}中指定它们。空行看起来像ClassMap<isa>
。
***************