java - 解析文本——Scanner 还是 BufferedReader?

标签 java parsing java.util.scanner buffering

对于我的数据结构类,第一个项目需要一个要解析的歌曲文本文件。

输入的一个例子是:
艺术家="未知"
TITLE="摇滚宝贝"
LYRICS=" treetop 上的摇滚宝贝
风一吹,你的 Gradle 就会摇晃
当弓断了你的 Gradle 就会坠落
婴儿 Gradle 和所有东西都会掉下来
"

我想知道将艺术家、标题和歌词提取到 Song 类中各自字符串字段的最佳方法。我的第一 react 是使用 Scanner,获取第一个字符,然后根据字母,使用 skip() 前进所需的字符并读取引号之间的文本。

如果我使用它,我将无法缓冲输入。完整的歌曲文本文件有超过 422K 行文本。即使没有缓冲,扫描器也能处理这个问题吗?

最佳答案

对于这样的事情,您可能应该只使用正则表达式。 Matcher 类支持缓冲输入。

find 方法采用偏移量,因此您可以在每个偏移量处解析它们。

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html

正则表达式本身就是一个完整的世界。如果您以前从未使用过它们,请从这里开始 http://download.oracle.com/javase/tutorial/essential/regex/并做好准备。付出的努力是非常值得的。

关于java - 解析文本——Scanner 还是 BufferedReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691900/

相关文章:

java - 小端数据输入流

Ruby:将嵌套数组的字符串表示形式解析为数组?

c++ - 使用 STL 解析整数

java - 使用 scanner.next() 返回下一个 n 个字符

java - 如何在 Java 中解析字符串?

java - 基于JRadioButton动态更改JPanel

java - 确定包含来自 Sun bug 数据库的修复的 JRE 版本

python - 匹配逗号分隔的键=值列表的正则表达式,其中值可以包含逗号

java - 阻止用户在java扫描仪中输入数字?

java - Java 中的扫描仪问题