Java中的useDelimiter()错误

这个问题在这里已经有了答案:

  • 如何在Java扫描器中使用分隔符? 3个答案

  • 这是因为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("rn", " ")); // remove new lines
            }
            file.close();
    
            for (String phrase : phrases) {
                System.out.println(phrase);
            }
        }
    }
    

    通过使用hasNext()next() ,我们可以使用我们的新功能. 分隔符而不是默认的新行分隔符。 因为我们这样做了,所以我们仍然file.next().trim().replace("rn", " ")你的段落散布的新线条,这就是为什么我们需要删除file.next().trim().replace("rn", " ")清理尾随空白并删除新的换行符。

    输入:

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

    输出:

    I love you
    You love me
    He loves her
    She loves him
    
    链接地址: http://www.djcxy.com/p/78341.html

    上一篇: Java error in useDelimiter()

    下一篇: How do i use separate two integers using dot in java?