我目前正在处理从URL中提取CSV文件并修改其条目。我目前正在使用StreamReader读取CSV的每一行并将其拆分为一个数组,我可以根据其位置修改每个条目。
CSV是从电子表单提供程序生成的,其中特定表单条目是多行字段,用户可以在其中添加多个备注。但是,当用户输入新笔记时,他们会通过换行符分隔每个笔记。
CSV示例:
"FName","LName","Email","Note 1: some text
Note 2: some text"
由于我的代码逐行拆分每个CSV条目,一旦达到这些条目,它就会认为它是一个新的CSV条目。这导致我的代码修改条目不起作用,因为元素位置变得不正确。 (带有空行或单行注释字段的CSV条目可正常工作)
关于采取最佳方法的任何想法?我已经尝试添加代码来替换回车或跳过空行,但它似乎没有帮助。
答案 0 :(得分:0)
您可以检查行中的第一列值是否为空。如果为null则继续读取下一行。
答案 1 :(得分:0)
假设您提供的CSV示例应该只是CSV文件中的一个条目(由于换行符,最后一个字段跨越几个不同的行),您可以尝试这样的事情,使用2个循环。
String[]
类型)currentRecord
和recordList
(列表或数组)保留一个变量,以保留所有CSV记录。currentRecord
中的最后一个元素(第4个)(如果currentRecord
不为空)。currentRecord
添加到recordList
如果您可以在解析之前删除字段中的换行符并清理CSV文件会更好。它会让事情变得更简单。
答案 2 :(得分:0)
使用适当的CSV库来处理写入和解析。这里有一些边缘案例要处理,而不仅仅是新行。用户还可以在他们的笔记中插入逗号或引号,自己处理它会变得非常混乱。
尝试uniVocity-parsers,因为它可以在解析和编写CSV时处理各种情况。
披露:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。