扫描程序类跳过空格

我使用嵌套的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); }