簡體   English   中英

如何讀取 java 中字符之間的多個標記?

[英]How do I read multiple tokens between characters in java?

我正在做一個項目,我需要從 txt 文件中讀取包含用戶數據的多行。 此數據將創建一個配置文件。

例如:

name,lastname,email,hobbies1;hobbies2...hobbiesN,activity1;activity2...activityN

name2,lastname2,email.... and so on

我不知道有多少愛好或活動,所以我必須將它們設置成一個數組。 所有變量都在一行上。 我嘗試使用分隔符和拆分,但是當我進入下一行時,我得到了 inputMismatchException。

最簡單的方法是改變格式。

不要用 分隔每個字段,而是嘗試使用; 用於分隔不同類型的屬性和,用於 arrays 的元素。 最終結果將類似於:

name; lastname; email; hobbies1, hobbies2, ..., hobbiesN; activity1, activity2, ..., activityN

首先,您使用;拆分String 作為分隔符,然后對於那些允許 arrays 的字段,您可以通過將子String拆分為,作為分隔符來划分數組的元素。

讀取行,然后以逗號分隔,並在需要時以分號分隔。

不要使用Scanner對文件進行行讀取。

try (BufferedReader in = Files.newBufferedReader(Paths.get("test.txt"))) {
    for (String line; (line = in.readLine()) != null; ) {
        String[] fields = line.split(",");
        String   name =       (fields.length >= 1 ? fields[0] : "");
        String   lastname =   (fields.length >= 2 ? fields[1] : "");
        String   email =      (fields.length >= 3 ? fields[2] : "");
        String[] hobbies =    (fields.length >= 4 ? fields[3].split(";") : new String[0]);
        String[] activities = (fields.length >= 5 ? fields[4].split(";") : new String[0]);
        System.out.println("name=" + name +
                         ", lastname=" + lastname +
                         ", email=" + email +
                         ", hobbies=" + Arrays.toString(hobbies) +
                         ", activities=" + Arrays.toString(activities));
    }
}

測試.txt

name,lastname,email,hobbies1;hobbies2...hobbiesN,activity1;activity2...activityN
name2,lastname2,email

Output

name=name, lastname=lastname, email=email, hobbies=[hobbies1, hobbies2...hobbiesN], activities=[activity1, activity2...activityN]
name=name2, lastname=lastname2, email=email, hobbies=[], activities=[]

暫無
暫無

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

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