gpt4 book ai didi

java - 从csv读取添加了无法删除的空格Java

转载 作者:行者123 更新时间:2023-12-02 11:41:14 31 4
gpt4 key购买 nike

我正在读取人员的 csv 文件,从他们的 ID、姓名和加入应用程序的日期开始。读取第一行时,第一个索引向字符串添加一个空格。我无法删除这个空格,因为我想将其解析为整数。

File nameOfFile = fileName;

BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";

try {
br = new BufferedReader(new FileReader(nameOfFile));
while ((line = br.readLine()) != null) {

String[] row = line.split(cvsSplitBy);

temp = row[0].trim();
temp.replaceAll("^\\s", "");
// temp.replaceAll(" ", "");
// String.format("%03d", temp);

System.out.println(temp.length() + " " + temp + " " + temp.charAt(0));

age = Integer.parseInt(temp);

name = row[1];
dateJoined = row[2];



}

} catch (FileNotFoundException | ArrayIndexOutOfBoundsException exception) {

System.out.println("File is not found, please try again.");
System.out.println(exception);

}

if (br != null) {
br.close(); //close buffered reader
}

我的 csv 文件:

约翰四世 2010 年 10 月 10 日

5 查尔斯 2010 年 8 月 24 日

6 安德鲁 09/01/2011

System.out.println(temp.length() + ""+ temp + ""+ temp.charAt(0));打印这个:

2 4

1 5 5

1 6 6

其中 System.out.println(temp.length() + ""+ temp + ""+ temp.charAt(1));打印出:

2 4 4

最佳答案

不要重新发明轮子。我会使用 Univocity 解析器,然后使用映射。更多信息:https://www.univocity.com/pages/parsers-documentation沿着这个的东西(没有测试它);

CsvParserSettings settings = new CsvParserSettings();
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new FileReader(yourfile));
List<Person> persons = allRows.stream().map(p->new Person(p[0],p[1],p[2])).collect(Collectors.toList())

在 Person bean 中我会创建特定的 setMethods,例如:

public void setAge(String age2parse){
try{
this.age = Integer.parse(age2parse.replaceAll("[^\\d.]",""))
}catch(Exception e){
}
}
public void setName(String name2parse){
this.name = name; // You could divide name here, if wanted.
}
public void setDate(String date2parse){
this.date = date2parse // I would parse it and store it as Date object.
}

最后,bean 中的构造函数;

public Person(String a, String n, String d){
setAge(a);
setName(n);
setDate(d);
}

打印:

persons.stream().forEachOrdered(p->System.out.println(p.getAge()+" "+p.getName()+" "+p.getDate()))

注意:甚至还有使用 BeanRowProcessors 的方法,当 bean 中有更多字段时,它似乎很适合,所以请检查 Univocity 上的文档。

关于java - 从csv读取添加了无法删除的空格Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48530365/

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