useDelimiter() 中的 Java 错误

标签 java read-text

<分区>

这就是我到目前为止一直在努力阅读一个文本文件,

   Scanner file = new Scanner(new File("sample.txt")).useDelimiter(".");
   ArrayList<String> arr = new ArrayList<>();
   while (file.hasNextLine()) {
      strList.add(file.nextLine());
   }
   file.close();
   for (int i = 0; i < arr.size(); i++) {
      System.out.println(arr.get(i));
   }

我的文本文件看起来像这样,

I love you. You
love me. He loves
her. She loves him.

我想要这样的代码结果,

I love you
You love me
He loves her
She loves him

但结果与文本文件本身相同。不是说“useDelimiter(".")”应该用句点(".")分隔文本文件吗?

我也尝试过使用 hasNext() 和 next() 而不是 hasNextLine() 和 nextLine(),但它会打印出空的 30 多行新行。

最佳答案

那是因为useDelimiter接受一个模式。点 . 是一个特殊字符,用于表示“任何字符”的正则表达式。只需用反斜杠转义句点即可:

Scanner file = new Scanner(new File("sample.txt")).useDelimiter("\\.");

编辑

问题是,您使用的 hasNextLine()nextLine() 不能与您的新 . 定界符一起正常工作.这是一个可以让您获得所需结果的工作示例:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

    final static String path = Test.class.getResource("sample.txt").getPath();

    public static void main(String[] args) throws IOException {
        Scanner file = new Scanner(new File(path)).useDelimiter("\\.");
        List<String> phrases = new ArrayList<String>();
        while (file.hasNext()) {
            phrases.add(file.next().trim().replace("\r\n", " ")); // remove new lines
        }
        file.close();

        for (String phrase : phrases) {
            System.out.println(phrase);
        }
    }
}

通过使用 hasNext()next(),我们可以使用新的 . 分隔符而不是默认的换行分隔符。然而,既然我们这样做了,我们仍然会在整个段落中散布新行,这就是为什么我们需要删除新行,这是 file.next().trim().replace("\r\n", "") 清理尾随空格并删除新的换行符。

输入:

I love you. You
love me. He loves
her. She loves him.

输出:

I love you
You love me
He loves her
She loves him

关于useDelimiter() 中的 Java 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969397/

相关文章:

machine-learning - 如何训练和读取图像/PDF中的特定文本?

hana - CDS View 中的 READ_TEXT 类似功能

c++ - 将制表符分隔值从文本文件读入数组

java - 如何在java中重新创建单例类

java - 日历设置 YEAR 问题

Java在运行时获取maven依赖的版本

java - 由大元素和小元素组成的 float 组的总和

java - 查找所有方法调用