为什么useDelimiter如此工作?

问题描述

我一直试图读取一个包含任何文本文件文件夹:

K.love,CLE,miss,2
K.Leonard,TOR,2
K.love,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(这是团队的名称)。

解决方法

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

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