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