在Java中,有没有一种方法可以使扫描仪只前进一个或n个字符?

在Java中,有没有一种方法可以使扫描仪只前进一个或n个字符?,java,java.util.scanner,Java,Java.util.scanner,举一个例子,如果你有一个时间:20:30,你只想知道那一时间的分钟数(我知道你可以使用LocalTime.parse(),然后使用getMinute(),但请记住,这只是一个例子,所以请假装你一秒钟都做不到),是否有一种方法可以使扫描仪只前进一定数量的行,然后在到达分钟部分后调用nextInt()?到目前为止,我知道的每种扫描方法都只扫描到空格或换行符。您可以在扫描仪上设置分隔符 Scanner input = new Scanner(System.in); input.useDelimiter

举一个例子,如果你有一个时间:20:30,你只想知道那一时间的分钟数(我知道你可以使用
LocalTime.parse()
,然后使用
getMinute()
,但请记住,这只是一个例子,所以请假装你一秒钟都做不到),是否有一种方法可以使扫描仪只前进一定数量的行,然后在到达分钟部分后调用
nextInt()
?到目前为止,我知道的每种扫描方法都只扫描到空格或换行符。

您可以在扫描仪上设置分隔符

Scanner input = new Scanner(System.in);
input.useDelimiter(":|\r");

int hr = scanner.nextInt();
int min = scanner.nextInt();
int sec = scanner.nextInt();
 
System.out.println(hr + " " + min + " " + sec);
用于输入
10:21:34

印刷品

10 21 34

您可以在扫描仪上设置分隔符

Scanner input = new Scanner(System.in);
input.useDelimiter(":|\r");

int hr = scanner.nextInt();
int min = scanner.nextInt();
int sec = scanner.nextInt();
 
System.out.println(hr + " " + min + " " + sec);
用于输入
10:21:34

印刷品

10 21 34

如果您知道要前进多少个字符,请使用

例如,如果要跳过100个字符:

scanner.skip("(?s).{100}");
如果您想跳过5行

scanner.skip("(?:.+(?:\r\n|[\n\r\u2028\u2029\u0085])){5}");
如果不知道要跳过多少个字符,只想找到下一个子字符串,请使用:


如果您知道要前进多少个字符,请使用

例如,如果要跳过100个字符:

scanner.skip("(?s).{100}");
如果您想跳过5行

scanner.skip("(?:.+(?:\r\n|[\n\r\u2028\u2029\u0085])){5}");
如果不知道要跳过多少个字符,只想找到下一个子字符串,请使用:


那是一种奇怪的方式。只需读取下一个标记,然后解析出所需的部分。扫描仪的设计是基于令牌的。谢谢J.巴克斯,知道这一点很有用,这是一种奇怪的方式。只需读取下一个标记,然后解析出所需的部分。扫描仪的设计是基于令牌的。谢谢你J.巴克斯,这很有用。好的,谢谢你,我发现很难回答我的问题,但skip方法正是我想要的,再次感谢,但只有一个问题,在java正则表达式中(?s)意味着什么?它启用了
s
选项,这使得
也匹配新行@Poobean@Poobean如果您认为我的答案回答您的问题,请考虑通过点击这个复选标记接受它!好的,谢谢你,我发现我的问题很难用词来表达,但是skip方法正是我想要的,再次感谢,但只有一个问题,(.s)在java正则表达式中是什么意思?它启用了
s
选项,这使得
也匹配新行@Poobean@Poobean如果您认为我的答案回答您的问题,请考虑通过点击这个复选标记接受它!