使用Scanner从文本文件中挑选出特定信息

时间:2014-06-06 14:32:11

标签: java regex

我无法找到一种有效的方法从这种格式的文本文件中挑选出具有多行的特定数据。

<"Name" "double" "double" "double" [...]> 

双打量因txt文件的每一行而异,
我只想挑出txt文件中每一行的第一个双倍。

我试图这样做的方式是:

Scanner doubleScan = new Scanner(System.in).useDelimiter("(\\w)(\\s+)");
String[] columnOne = elementScan.next().split(" ");

尝试使用正则表达式使扫描仪具有期望值,但如果行中未知量的双倍,则无法正常工作。然后尝试存储所有被挑选出的(每行的第1行)在数组中加倍

非常感谢任何建议,仅限扫描仪。

1 个答案:

答案 0 :(得分:1)

您可以使用scanner.nextLine()逐行读取,然后使用plit方法并从数组中获取第二个元素。或者,如果您对仅使用扫描仪非常了解,则可以为每一行创建另一个扫描程序,并使用nextDouble()方法检查双重扫描程序。实施例。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Application {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            Scanner fileScanner = new Scanner(file);
            while (fileScanner.hasNext()) {
                Scanner lineScanner = new Scanner(fileScanner.nextLine());
                while (lineScanner.hasNext()) {
                    if (lineScanner.hasNextDouble()) {
                        System.out.println("First Double :" + lineScanner.nextDouble());
                        break;
                    } else {
                        lineScanner.next();
                    }
                }
                lineScanner.close();
            }
            fileScanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}