我需要解析以下格式的文本文件并仅从文本文件中提取所需的值。文本文件的内容是
4564444 FALSE / TRUE 0 name k0LiuME5Q3
4342222 TRUE / TRUE 0 id ab4454jj
我需要得到名称和id后的值。什么是最好的方法。我在java使用扫描仪类,但无法获得值。尝试使用下面的代码。
Scanner scanner = new Scanner(new File("test.txt"));
while(scanner.hasNext()){
String[] tokens = scanner.nextLine().split(" ");
String last = tokens[tokens.length - 1];
System.out.println(last);
}
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Read_Text_File {
public static void main(String[] args) {
System.out.println(getValues());
}
public static ArrayList<String> getValues() {
FileInputStream stream = null;
try {
stream = new FileInputStream("src/resources/java_txt_file.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String strLine;
ArrayList<String> lines = new ArrayList<String>();
try {
while ((strLine = reader.readLine()) != null) {
String lastWord = strLine.substring(strLine.lastIndexOf(" ")+1);
lines.add(lastWord);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return lines;
}
}
输出:
[k0Liu ME5Q3, ab4454jj]
您需要按空格分割,而不是分号:
String[] tokens = scanner.nextLine().split(" ");
逐行读取数据,每行使用String. split("\s*")将没有空格的部分放入一个包含7个元素的数组中。这些元素中的最后一个就是你要找的。