簡體   English   中英

讀取 Java 中的 csv 文件時如何跳過空白單元格?

[英]How to skip blank cells when reading a csv file in Java?

嘗試創建 csv 文件閱讀器,但閱讀器遇到行尾空白時會收到 ArrayIndexOutOfBoundsException。

示例:姓名、Email、年齡、城市

  1. 約翰,johnsmith@email,23 歲,紐約 - 這很有效並且是標准的
  2. 約翰, johnsmith@email, 23, - 這失敗了
  3. ,,23,New York - 這行得通
  4. 約翰,johnsmith@email,-這失敗了

也歡迎任何其他反饋!

這是代碼。

    public class Main {
    static String filepath = "filepath.csv";

    public static void main(String[] args) {
        SQLiteDB db = new SQLiteDB();
        CSVReader(filepath);        
    }

    public static void CSVReader(String filepath) {
        List<User> users = new ArrayList<User>();
        BufferedReader br = null;
        String line;
        int count = 1;

        try {
            br = new BufferedReader(new FileReader(filepath));
            while ((line = br.readLine()) != null) {
                if(line.trim().length() > 0) {
                User user = new User();
                String[] userinfo = line.split(",(?=([^\"]|\"[^\"]*\")*$)");
                user.firstName = userinfo[0];
                user.lastName = userinfo[1];
                user.email = userinfo[2];
                user.gender = userinfo[3];
                user.image = userinfo[4];
                user.bank = userinfo[5];
                user.transaction = userinfo[6];
                user.bool1 = userinfo[7];
                user.bool2 = userinfo[8];
                user.city = userinfo[9];
                users.add(user);
                
                System.out.println("Count:" + count + " " + user.getBool2());
                count++;
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
    }
}

對於城市值,只需在賦值前使用三元運算符檢查數組長度即可:

user.city = userinfo.length == 10 ? userinfo[9] : "";

如果這不是一個家庭作業項目,你為什么不使用圖書館呢? GitHub 上有幾個,這里有一個似乎很容易使用 - https://github.com/osiegmar/FastCSV

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM