我使用嵌套的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 " "
,而" "
就是我需要返回的内容。
答案 0 :(得分:12)
使用扫描仪的hasNextLine()
和nextLine()
方法,您将找到解决方案,因为这样可以捕获空白行或空白行。
答案 1 :(得分:4)
默认情况下,扫描程序使用空格分隔令牌。
使用Scanner#nextLine方法,使此扫描程序超过当前行,并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。
要使用其他标记分隔符,请调用useDelimiter(),指定 一个正则表达式。例如,假设您需要令牌 分隔符是逗号,可选地后跟空格。你会 调用,
scanner.useDelimiter(",\\s*");
从http://docs.oracle.com/javase/tutorial/essential/io/scanning.html
了解详情答案 2 :(得分:2)
您必须了解什么是令牌。阅读Scanner
的文档:
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。
您可以使用nextLine()
方法获取整行,而不是“忽略”任何空格。
最好使用useDelimiter
方法定义什么是令牌。
答案 3 :(得分:0)
这对你有用
Scanner scanner = new Scanner(new File("D:\\sample.txt"));
while (scanner.hasNextLine()) {
String token = scanner.nextLine();
System.out.println(token);
}
答案 4 :(得分:0)
要使用更实用的方法,您可以使用以下方法:
String fileContent = new Scanner(new File("D:\\sample.txt"))
.useDelimiter("")
.tokens()
.reduce("", String::concat);