Sam*_*uel 1 java io newline delimiter
我试图简单地使用带有分隔符等于""的scanner .next()读取文本文件中的单词,但扫描程序包含带有令牌的换行符/回车符.
我已经搜索了互联网,试图找到这个问题的一个很好的例子,但没有找到它所以我在这里发布它.我在SO上发现了另一个类似的问题.我也看了关于扫描仪和模式(文档超过http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html),但我仍然无法找到一个方法来解决这个.
文本文件:
这是一个测试
看看if1这个,是否有效
好!
码:
int i = 0;
String string;
try(Scanner scanner = new Scanner(new File(filename))) {
scanner.useDelimiter(" ");
while(scanner.hasNext())
{
string = scanner.next();
System.out.println(i++ + ": " + string);
}
}catch(IOException io_error) {
System.out.println(io_error);
}
Run Code Online (Sandbox Code Playgroud)
输出:
0:这个
1:是
2:a
3:测试
至
4:看
5:if1
6:这个,
7:是
8:工作
好!
如您所见,#3和#8有两个单词换行.(我知道我可以将它们分成两个单独的字符串.)
扫描程序使用的默认空白分隔符可以识别
Character.isWhitespace
根据Java确定指定的字符是否为空白.当且仅当它满足以下条件之一时,字符才是Java空白字符:
- 它是一个Unicode空格字符(SPACE_SEPARATOR,LINE_SEPARATOR或PARAGRAPH_SEPARATOR),但也不是一个不间断的空格('\ u00A0','\ u2007','\ u202F').
- 这是'\ t',U + 0009 HORIZONTAL TABULATION.
- 它是'\n',U + 000A LINE FEED.
- 这是'\ u000B',U + 000B VERTICAL TABULATION.
- 它是'\ f',U + 000C FORM FEED.
- 这是'\ r',U + 000D CARRIAGE RETURN.
- 它是'\ u001C',U + 001C FILE SEPARATOR.
- 它是'\ u001D',U + 001D GROUP SEPARATOR.
- 它是'\ u001E',U + 001E RECORD SEPARATOR.
- 它是'\ u001F',U + 001F UNIT SEPARATOR.
所以,只是不要设置任何特定的分隔符.保持默认值,换行符将被视为分隔符,就像空格一样,这意味着令牌不会包含换行符.
| 归档时间: |
|
| 查看次数: |
5831 次 |
| 最近记录: |