这是我的数据集,该数据集来自我无法控制输出的命令:
BOOLEANCOLUMN NAME CLUSTER AUTHINFO
someName someCluster SomeMoreData
* name2 Data2 Data2
我希望能够将其转换为可处理数据的类,我尝试使用CSVHelper,但是它们的标头没有定界,它们之间的间距使数据格式易于阅读。 我目前有一个映射类:
public ContextMap()
{
Map(m => m.Name).Name("NAME");
Map(m => m.AuthInfo).Name("AUTHINFO");
Map(m => m.Cluster).Name("CLUSTER");
Map(m => m.BooleanColumn).Name("BOOLEANCOLUMN");
}
但我遇到了异常:
CsvHelper.MissingFieldException:'名称为'NAME'的字段不存在。您可以通过将MissingFieldFound设置为null来忽略缺少的字段。
问题:如何将这些数据解析为一个类?
答案 0 :(得分:0)
我看了看文档,似乎开发人员已经计划实现固定宽度的解析器,但是还没有实现。
要解决此问题,我创建了以下方法,将数据转换为用代码分隔的数据:
public static string ConvertFixedWidthToCsv(string data)
{
var rows = data.Split(
new[] { "\r\n", "\r", "\n" },
StringSplitOptions.None
);
var returnRows = new List<string>();
foreach (var row in rows)
{
if (string.IsNullOrWhiteSpace(row))
{
continue;
}
var parsed = Regex.Replace(row, @"\s+", ",");
returnRows.Add(parsed);
}
return String.Join("\r\n", returnRows);
}