我尝试了多种方法来查看它们是否会删除CSV文件中第一个条目的前导空格,但是它们似乎都不起作用,并且我还确认我没有在其中意外键入空格。我的文件。
我使用了String.replaceAll(“”,“”),String.trim(),String.strip(),但是它们都不起作用。
for(int r = 0; r < 303; r++){
String s = file.nextLine();
s = s.replaceAll(" ", ""); //attempt to remove whitespace
str_arr = s.split(",");
for(int c = 0; c < 6; c++){
str_arr[c] = str_arr[c].strip(); //2nd attempt
System.out.println(str_arr[c]); //here it just prints the
number 64 with a space in
front of it
data_set[r][c] = Integer.parseInt(str_arr[c]);
}
}
所有字符串的空格都被删除了,这只是第一个条目号仍带有前导空格,这导致行Integer.parseInt(str_arr [c])返回NumberFormatException(我知道这将返回,因为前导空白)。
答案 0 :(得分:-1)
您的文件是BOM,因此我们需要其他方式来处理它,请参阅 here了解更多信息。
public static void readCSV(){
String p1 = "file ...\\heart.csv";
List<String> linesInFile1 = new ArrayList<>();
try {
linesInFile1 = Files.readAllLines(new File(p1).toPath(), Charset.defaultCharset() );
} catch (IOException ex) {
Logger.getLogger(StackOverflows.class.getName()).log(Level.SEVERE, null, ex);
}
//69,1,145,233,150,1
for(String ss:linesInFile1){
for(String s: ss.split(",")){
System.out.print(Integer.valueOf(removeUTF8BOM(s))+" ");
}
System.out.println();
}
}
private static String removeUTF8BOM(String s) {
final String UTF8_BOM = "\uFEFF";
if (s.startsWith(UTF8_BOM)) {
s = s.substring(1);
}
return s;
}
答案 1 :(得分:-2)
您可以使用trim()方法删除空格。
String removeWhiteSpace = " Hello";
System.out.println(removeWhiteSpace.trim());