以下是我尝试从CSV导入的数据
Time|Person|Products|Address
(now)|person1|val1*val2*val3|adr1
其中*
是换行符/回车符
这是我导入时的样子:
(now)|person1|val1val2val3|adr1
这就是我需要它的样子:
(now)|person1|val1|adr1
(now)|person1|val2|adr1 etc.
我尝试过:主要围绕string.Spilt()
自定义编码CSV解析器,它给了我确切的结果,并且需要永远处理。我已经尝试了Sebastien Lorion的CSVReader
并且它给了我完全相同的结果,尽管它显然更快更容易插入到我现有的代码中。我甚至尝试过具有完全相同结果的VB TextFieldParser
。
现在,这就是我的想法:
以某种方式传递字段的值(我不知道如何引用它们)当我将它传递给另一个返回List<string>
对象的方法时,通过该方法我可以迭代并添加到DataTable并从那里做什么需要做。用旧叉子取下我的脑干。在我的呼吸下嘀咕着。
这是TextFieldParser代码:
OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
TextFieldParser parser = new TextFieldParser(new StreamReader(op.FileName));
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
contents.AddRange(parser.ReadFields());
}
答案 0 :(得分:1)
在我看来,如果你必须坚持使用这种CSV格式,我会在你上面的内容中全部阅读;但之后,我会遍历您的数据集合,然后手动将产品串分割成您需要的组件。
尝试一次性完成所有这一切都会使问题复杂化。
一旦你有了单独的课程,你就可以在Carriage return上拆分产品,如下所示:
string[] result = input.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:0)
查看FileHelpers库。它非常快速且非常灵活。虽然我认为你必须为你想做的事情写一些自定义处理逻辑。