来自格式化文件的 Java 输入

标签 java parsing

我正在尝试从具有各种不同行的文件中获取输入。

例如格式为书名,作者:借款人名:借款人所在国

这里有一些示例行。

The Lord of the Rings, JRR Tolkien:McInnes Elizabeth:13 11 10

Crime And Punishment, Fyodor Dostoyevsky

The Clan Of The Cave Bear, Jean M Auel

The God Of Small Things, Arundhati Roy:Robins Joshua:20 11 10

所以我在设置扫描仪后尝试使用 useDelimiter,但由于某些行较短,我不知道该怎么做。

最佳答案

下面是一个基于正则表达式的解决方案:

import java.io.*;
import java.util.regex.*;

public class Test {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader("data.txt"));

        Pattern p = Pattern.compile("(.+?),(.+?)(?::(.+?):(\\d+ \\d+ \\d+))?");

        String line;
        while (null != (line = br.readLine())) {
            Matcher m = p.matcher(line);
            if (m.matches()) {
                String title = m.group(1);
                String author = m.group(2);
                String borrower = m.group(3);
                String data = m.group(4);

                System.out.println("Title:  " + title);
                System.out.println("Author: " + author);
                if (borrower != null) {
                    System.out.println("    Borrower: " + borrower);
                    System.out.println("    Data:     " + data);
                }
            }
            System.out.println();
        }

        br.close();
    }
}

根据您的示例输入,它会打印:

Title:  The Lord of the Rings
Author:  JRR Tolkien
    Borrower: McInnes Elizabeth
    Data:     13 11 10

Title:  Crime And Punishment
Author:  Fyodor Dostoyevsky

Title:  The Clan Of The Cave Bear
Author:  Jean M Auel

Title:  The God Of Small Things
Author:  Arundhati Roy
    Borrower: Robins Joshua
    Data:     20 11 10

关于来自格式化文件的 Java 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318153/

相关文章:

ruby-on-rails - 在 Rails Controller 或普通 ruby​​ 中检查 CSS?

parsing - 如何在 haskell 中使用 parsec 解析带有基本前缀的整数?

java - 取消定时器

java - 通过另一个 Activity 的 onClick 事件将值传递给其容器 Activity 的两个 fragment

java - JSP生成的随机码长度不标准

JavaFX : Button never sets a graphic

python - urrlib2 请求 https 站点 - 出现 400 错误

java - 从不同的计算机和互联网连接到 mySQL netbeans 项目

java - 如何通过使用 OpenCsv 记录无效记录的错误来创建有效 CSV 记录的列表?

php - 在 PHP 调用中将 vector 发送到 C++ 程序并读取它