来自 FileIO 的扫描仪没有给出预期的结果

Scanner from FileIO does not give desired result

我在 txt 文件中有文本,内容为 (瑜伽 class;12;2;11-12;描述;11;2019;11;2) 当我尝试打印字段 [4] 或字段 [0] 等特定字段时 我分别得到 classdescription 和 the2。 我如何在打印字段时获得 "the description"?

        while(sc.hasNext()) {
            String [] fields = sc.next().split(";");
            for (int i =4; i<fields.length; i++) {
                System.out.println(fields[0]);
            }
        }


    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

默认情况下,Scanner 使用“”作为分隔符。您期望 sc.next() 到 return 一个完整的行。所以你需要将 EOL 设置为分隔符:

sc.useDelimiter(System.getProperty("line.separator"));

将输出 sc.next() 放入字符串变量并打印它以验证它是否 return 符合您的预期会有所帮助:

sc.useDelimiter(System.getProperty("line.separator"));
while(sc.hasNext()) {
    String line=sc.next();
    String [] fields = line.split(";");
    System.out.println(fields[4]);
}