[英]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.