试图在Java中将csv文件读入ArrayList,但元素无意中合并了?
我有一个csv文件,其中包含我试图放入arraylist的值,但行的最后一个值与第二行的第一个值合并。 见: 我有这样的数据试图在Java中将csv文件读入ArrayList,但元素无意中合并了?,java,csv,file-io,java.util.scanner,Java,Csv,File Io,Java.util.scanner,我有一个csv文件,其中包含我试图放入arraylist的值,但行的最后一个值与第二行的第一个值合并。 见: 我有这样的数据 Account Number,Investment Account,Bank Number,Gender,Balance 2544434, Y, 145556, F,1000 2544578, N, 254309, M, 20000 2544230, N, 150365, F, 500000 1000 2544578 到目前为止,我的代码是 public stat
Account Number,Investment Account,Bank Number,Gender,Balance
2544434, Y, 145556, F,1000
2544578, N, 254309, M, 20000
2544230, N, 150365, F, 500000
1000
2544578
到目前为止,我的代码是
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO code application logic here
List<String> list = new ArrayList<String>();
try {
Scanner sc = new Scanner(new File("data.csv"));
sc.useDelimiter(",");
sc.nextLine();
while(sc.hasNext()) {
list.add(sc.next());
}
System.out.println(list.get(4))
}
当我想分开时,它们各自行的最后一个和第一个值合并为一个。我已经搜索了类似的问题,但没有找到任何问题,所以我想知道这里是否有人可以提供帮助我希望使用Scanner模块完成此操作。在本例中,您已经指出,新行不会分隔CSV格式的每个元素。 要解决此问题,可以使用重载方法
usedimiter
提供一个模式,其中分隔符是逗号,后跟空格或新行
有些正则表达式是这样的:
,\W |[\n]
因为你的纤度计。改为读到“\n”,这将给出每一行。然后,您可以使用“,”来打断该行,或者,在将其更改为.hasNextLine()时,使用
进行迭代(sc.hasNextLine())
。它仍然提供相同的输出,我需要如何实现第一个解决方案,以查看这是否可行?谢谢您的时间。如果您不想使用regex(非常合理),您应该使用Ceelos的建议,这是对问题的评论。因此,sc.useDelimiter(“,\\W |[\\n]”)可以像您建议的那样或Ceelos提到的那样作为适当的替代品,阅读“\n”。nextLine()就足够了。看起来很简单,谢谢你的帮助是的,非常接近,它接受字符串
或模式
(这将是一个正则表达式),我相信你必须执行sc.useDelimiter(Pattern.compile(“,\\W |[\\n]”)
。再次感谢,我可能会创建一个java类对象,然后将csv文件读入其中,因此我不需要依赖于使用模式编译。我可能应该这样做,或者从那开始,但是谢谢你给我澄清了这个问题!