扫描程序类跳过空格
我使用嵌套的Scanner
循环从字符串行(从文本文件)中提取数字,如下所示:
String str = testString; Scanner scanner = new Scanner(str); while (scanner.hasNext()) { String token = scanner.next(); // Here each token will be used }
问题是这段代码会跳过所有空格" "
,但我也需要使用那些“空格”。 那么Scanner
可以返回空间还是我需要使用别的东西?
我的文本文件可能包含以下内容:
0 011 abc d2d sdwq sda
那些空白行每个包含1 " "
,那些" "
是我需要返回的。
使用扫描仪的hasNextLine()
和nextLine()
方法,您将找到您的解决方案,因为这将允许您捕获空行或空白行。
默认情况下,扫描程序使用空格分隔令牌。
使用扫描仪#sextLine方法,使此扫描仪超过当前行并返回跳过的输入。 此方法返回当前行的其余部分,不包括末尾的任何行分隔符。 该位置设置为下一行的开头。
要使用其他标记分隔符,请调用useDelimiter(),指定正则表达式。 例如,假设您希望令牌分隔符为逗号,可选地后跟空格。 你会调用,
scanner.useDelimiter(",\\s*");
从http://docs.oracle.com/javase/tutorial/essential/io/scanning.html了解更多信息
你必须了解什么是令牌 。 阅读Scanner
的文档:
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。
您可以使用nextLine()
方法获取整行,而不是“忽略”任何空格。
更好的是,您可以使用useDelimiter
方法定义什么是令牌。
这对你有用
Scanner scanner = new Scanner(new File("D:\\sample.txt")); while (scanner.hasNextLine()) { String token = scanner.nextLine(); System.out.println(token); }