在Java中,如何将分隔符与Scanner.useDelimiter一起使用?

在Java中,如何将分隔符与Scanner.useDelimiter一起使用?,java,java.util.scanner,delimiter,Java,Java.util.scanner,Delimiter,我不明白分隔符是怎么工作的,有人能用外行的术语解释一下吗 扫描器也可以使用除空白以外的分隔符 简单示例来自: 关键是要理解内部的正则表达式()。查找usedimiter教程 从正则表达式开始,这是一个不错的教程 笔记 对于Scanner,默认分隔符是空白字符 但扫描器可以基于一组分隔符定义标记的起始位置和结束位置,可以通过两种方式指定: 使用扫描仪方法: 使用Scanner方法:其中Pattern是指定分隔符集的正则表达式 因此,useDelimiter()方法用于标记扫描仪输入,其行为类似于

我不明白分隔符是怎么工作的,有人能用外行的术语解释一下吗

扫描器也可以使用除空白以外的分隔符

简单示例来自:

关键是要理解内部的正则表达式()。查找
usedimiter
教程


从正则表达式开始,这是一个不错的教程

笔记
对于Scanner,默认分隔符是空白字符

但扫描器可以基于一组分隔符定义标记的起始位置和结束位置,可以通过两种方式指定:

  • 使用扫描仪方法:
  • 使用Scanner方法:其中Pattern是指定分隔符集的正则表达式
  • 因此,
    useDelimiter()
    方法用于标记扫描仪输入,其行为类似于,有关更多信息,请参阅这些教程:

    这是一个:

    打印此输出:

    public static void main(String[] args) {
    
        // Initialize Scanner object
        Scanner scan = new Scanner("Anna Mills/Female/18");
        // initialize the string delimiter
        scan.useDelimiter("/");
        // Printing the tokenized Strings
        while(scan.hasNext()){
            System.out.println(scan.next());
        }
        // closing the scanner stream
        scan.close();
    }
    
    例如:

    Anna Mills
    Female
    18
    
    这将允许您使用Enter作为分隔符

    因此,如果您输入:

    String myInput = null;
    Scanner myscan = new Scanner(System.in).useDelimiter("\\n");
    System.out.println("Enter your input: ");
    myInput = myscan.next();
    System.out.println(myInput);
    

    它将打印“Hello World”。

    在这里,它是这样工作的:正如javadoc所说,“使用定界符模式将其输入分解为标记,默认情况下,定界符模式匹配空格。然后,生成的标记可以使用各种下一步方法转换为不同类型的值”。不是很清楚吗?@ema——我想这是开玩笑的,因为只有当你们已经“了解分隔符是如何工作的”而NoMoreErrors并没有的时候,这才是清楚的。例如,什么是“分隔符模式”可能只是不清楚你说了什么,这肯定没有错,只是对Q没有帮助。但我想,至少你没有像很多人那样,兴高采烈地侮辱NoMoreErrors。
    *
    意味着零次或多次重复检查我的更新和答案中提供的链接;)@在正则表达式表中可以看到未知:
    \\s*
    是任何空白字符的0个或更多重复,并且
    fish
    是查找调整的模式供参考:此行:Scanner s=new Scanner(input)。使用分隔符(\\sfish\\s”);实际上存在资源泄漏,即使调用s.close()。泄漏发生在调用useDelimiter的扫描仪上。如果改为调用
    Scanner s=new Scanner(输入);s、 使用分隔符(\\s*fish\\s)您避免了这个问题。@georges实际上我的行是:(“\\sfish\\s”)。。。不是(“\\sfish\\s”),但您能澄清一下您的意思吗?换句话说,对于新手来说,这个答案和评论对纠正错误毫无帮助。学习
    regex
    只是为了使用
    Scanner
    ??????当然,这会有帮助,但这已经超出了他的需要。举个例子。简单的例子。是的,但它是如何工作的?两个反斜杠是什么意思?但是万岁,现在我们知道如何使用Enter作为分隔符。假设它有效。
    public static void main(String[] args) {
    
        // Initialize Scanner object
        Scanner scan = new Scanner("Anna Mills/Female/18");
        // initialize the string delimiter
        scan.useDelimiter("/");
        // Printing the tokenized Strings
        while(scan.hasNext()){
            System.out.println(scan.next());
        }
        // closing the scanner stream
        scan.close();
    }
    
    Anna Mills
    Female
    18
    
    String myInput = null;
    Scanner myscan = new Scanner(System.in).useDelimiter("\\n");
    System.out.println("Enter your input: ");
    myInput = myscan.next();
    System.out.println(myInput);
    
    Hello world (ENTER)