使用Java将CSV文件编号导入数组,奇怪的"whitespace"无法裁剪
Use Java import CSV file number into array, strange "whitespace" cannot be trimmed
我正在使用 java 将 excel 文件中的双打导入双打数组,这是我的代码(我从另一个来源窃取了代码的后半部分:https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/ ):
private static int rows = 10;
private static double[][][] data10;
data10 = new double[rows][2][];
for (int i = 0; i<rows; i++) {
data10[i][0] = new double[16];
data10[i][1] = new double[1];
}
String csvFile = "data.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
for (int j = 0; j < rows; j++) {
line = br.readLine();
// use comma as separator
String[] values = line.split(cvsSplitBy);
for (int i = 0; i < values.length-1; i++) {
//String temp = values[i];
//System.out.println(temp.trim());
//System.out.println(2);
data10[j][0][i] = Double.valueOf(values[i]);
}
data10[j][1][0] = Double.valueOf(values[values.length - 1].trim());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我在这一行有数字格式异常:
data10[j][0][i] = Double.valueOf(values[i]);
原因是csv文件中的第一个单元格是数字2,但在异常消息中显示为“2”。我尝试 trim 字符串,但是 "whitespace" 不能 trimmed。我试图将 values[i] 分配给一个 String 对象并 trim 它但没有成功。
最后我意识到我必须将文件保存为 "comma separated values(.csv)",而不是 "CSV UTF-8(comma delimited)(.csv)"。更正此后,代码有效。
我希望这会对某人有所帮助。我在其他 Whosebug 帖子中找不到答案。
.trim() 替换由 unicode '\u0020' 表示的空格。您可能会看到一个 nobreakspace( ),它由 '\u00A0' 表示。
要删除它,请尝试:data10[j][0][i] = Double.valueOf(values[i].replaceAll("\u00A0", ""));
我正在使用 java 将 excel 文件中的双打导入双打数组,这是我的代码(我从另一个来源窃取了代码的后半部分:https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/ ):
private static int rows = 10;
private static double[][][] data10;
data10 = new double[rows][2][];
for (int i = 0; i<rows; i++) {
data10[i][0] = new double[16];
data10[i][1] = new double[1];
}
String csvFile = "data.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
for (int j = 0; j < rows; j++) {
line = br.readLine();
// use comma as separator
String[] values = line.split(cvsSplitBy);
for (int i = 0; i < values.length-1; i++) {
//String temp = values[i];
//System.out.println(temp.trim());
//System.out.println(2);
data10[j][0][i] = Double.valueOf(values[i]);
}
data10[j][1][0] = Double.valueOf(values[values.length - 1].trim());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我在这一行有数字格式异常:
data10[j][0][i] = Double.valueOf(values[i]);
原因是csv文件中的第一个单元格是数字2,但在异常消息中显示为“2”。我尝试 trim 字符串,但是 "whitespace" 不能 trimmed。我试图将 values[i] 分配给一个 String 对象并 trim 它但没有成功。
最后我意识到我必须将文件保存为 "comma separated values(.csv)",而不是 "CSV UTF-8(comma delimited)(.csv)"。更正此后,代码有效。
我希望这会对某人有所帮助。我在其他 Whosebug 帖子中找不到答案。
.trim() 替换由 unicode '\u0020' 表示的空格。您可能会看到一个 nobreakspace( ),它由 '\u00A0' 表示。
要删除它,请尝试:data10[j][0][i] = Double.valueOf(values[i].replaceAll("\u00A0", ""));