[英]Split a file by delimiter line in Java
說,我有一個如下所示的文件:
---------
line11
line12
line13
---------
line21
line22
line23
line24
line25
---------
line31
line32
---------
我需要將此文件中的行列表拆分為由包含破折號的行分隔的子列表,並分別處理它們。 在 Java 中有什么方便的方法可以做到這一點嗎?
一種快速的方法是使用 Scanner 類。 指定一個自定義的“分隔符”,它會返回你的行塊。
Scanner scanner = new Scanner(new File("file.txt"));
scanner.useDelimiter("---------");
while (scanner.hasNext()) {
System.out.println("<<<<" + scanner.next() + ">>>>>");
}
輸出:
<<<<
line11
line12
line13
>>>>>
<<<<
line21
line22
line23
line24
line25
>>>>>
<<<<
line31
line32
>>>>>
正如@MadProgrammer 已經提到的,算法將是if (input.equals("---------")) { /* create new sublist */ }
。 將有一些直接的驗證。 如有任何疑問/問題,請隨時發表評論。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String line;
List<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
List<String> sublist = new ArrayList<String>();
int row = 1;
try {
Scanner reader = new Scanner(new File("file.txt"));
while (reader.hasNextLine()) {
line = reader.nextLine();
if (line != null && row != 1 && line.equals("---------")) {
list.add(new ArrayList<String>(sublist));
sublist = new ArrayList<String>();
} else {
if (!line.equals("---------")) {
sublist.add(line);
}
row++;
}
}
} catch (FileNotFoundException e) {
System.out.println("Error: unable to read file.");
}
System.out.println(list);
}
}
輸出:
[[line11, line12, line13], [line21, line22, line23, line24, line25], [line31, line32]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.