gpt4 book ai didi

java - Android/Java,如何在某些字段中处理带有换行符和逗号的csv文件?

转载 作者:行者123 更新时间:2023-11-30 04:54:15 25 4
gpt4 key购买 nike

Android/Java,如何处理csv文件的某些字段有换行和逗号?

例如,每条记录有三个字段。

A, B, "Good morning,
may I get a cup of water?"
C, D, good night.

我应该怎么做才能正确解析它并将其存储到对象数组列表中?

如果我阅读第一行,我将错过最后几个字段的第二部分。

(我试图将opencsv添加到android项目中,但是我在构建时遇到了与dex相关的错误..很难理解..所以我尝试自己实现加载csv功能,因为我只需要阅读只有文件,但我想不出正确的逻辑。)

最佳答案

要读取文件并保存每条记录,您可以使用:

List<String> content = Files.lines(Paths.get("app.csv")).collect(Collectors.toList());

或者如果你想保存每个以逗号分隔的字段,使用这个:

List<String> content = Files.lines(Paths.get("app.csv")).collect(Collectors.toList());
List<String> result = new ArrayList();

content.forEach((t) -> {
for(String s : t.split(",")){
result.add(s);
}
});

System.out.println(result);

结果:

[A,  B,  "Good morning, may I get a cup of water?", C,  D,  good night.]

编辑

    List<String> content = Files.lines(Paths.get("app.csv")).collect(Collectors.toList());
List<String> result = new ArrayList();

StringJoiner tmp = new StringJoiner(" ");
boolean insideTextFlag = false;

for(String t : content){
for (String s : t.split(",")) {
if(s.contains("\"") || insideTextFlag){

if(s.contains("\"") && insideTextFlag)
insideTextFlag = false;
else
insideTextFlag = true;

tmp.add(s.trim());

if(!insideTextFlag){
result.add(tmp.toString());
tmp = new StringJoiner(" ");
}
}else{
result.add(s.trim());
}
}
}

result.forEach((t) -> {
System.out.println(t);
});

输出

A
B
"Good morning may I get a cup of water?"
C
D
good night.

关于java - Android/Java,如何在某些字段中处理带有换行符和逗号的csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59503474/

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