是否可以删除CSV文件中第一项的前导空白?

时间:2019-04-28 06:22:20

标签: java string csv

我尝试了多种方法来查看它们是否会删除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(我知道这将返回,因为前导空白)。

2 个答案:

答案 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());