为什么 useDelimiter 是这样工作的?

Why is the useDelimiter works like that?

提问人:UnNameSAS 提问时间:9/27/2020 最后编辑:MureinikUnNameSAS 更新时间:9/27/2020 访问量:40

问:

我一直在尝试读取包含任何文本文件的文件夹,如下所示:

K.Love,CLE,miss,2
K.Leonard,TOR,miss,2
K.Love,CLE,make,1
...

我正在做一些测试,由于某种原因,当我使用 忽略或使逗号消失时,我遇到了一个问题。我将首先展示代码:useDelimeter

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

public class test {
    public static void main(String[] args) throws FileNotFoundException {
        File inputFile = new File("src\\main\\resources\\games\\game1.txt");
        Scanner reader = new Scanner(inputFile);
        reader.useDelimiter(",");
        ArrayList<String> names = new ArrayList<>();
        while (reader.hasNext()) {
            String input = reader.next();
            names.add(input);
        }
        System.out.println(names.get(3));
        reader.close();
    }
}

当控制台在位置 3 打印 arrayList 时,我的期望是:

K.Leonard

但它不是这样打印:

2
K.Leonard

当我将位置更改为数字 4 时,它会打印:(这是团队的名称)。TOR

Java java.util.scanner 分隔符

评论

0赞 Ivar 9/27/2020
“2”和“K.Leonard”之间没有,那么他们为什么要独立获取呢?,
0赞 UnNameSAS 9/27/2020
哦,很抱歉问这个问题,但是我该如何解决这个问题呢?我是编程新手,很抱歉我的无知。
0赞 OneCricketeer 9/27/2020
最好使用 CSV 库而不是 Scanner

答:

2赞 Mureinik 9/27/2020 #1

您将分隔符定义为 ,这意味着换行符不再是分隔符。若要获得预期的行为,可以使用正则表达式,其中 a 或换行符被视为分隔符:,,

reader.useDelimiter("[,\n]");

评论

0赞 rzwitserloot 9/27/2020
@UnNameSAS 该正则表达式存在严重问题 - 它不适用于 Windows 或 Windows 格式的文本输入。尝试。",|\r?\n"