代码对比
✕ Java 8
String text = "one\ntwo\nthree";
String[] lines = text.split("\n");
for (String line : lines) {
System.out.println(line);
}
✓ Java 11+
String text = "one\ntwo\nthree"; text.lines().forEach(IO::println);
发现此代码有问题? 告诉我们。
为什么现代方式更好
懒加载流
行按需生成,不像 split() 那样一次全部生成。
正确的行分隔符
处理 \n、\r\n 和 \r,无需正则表达式。
可链式调用
直接链式调用 filter、map 和其他流操作。
旧方式
split("\\n")
现代方式
lines()
自 JDK
11
难度
入门
JDK 支持
用 String.lines() 分割行
可用
自 JDK 11 起可用(2018 年 9 月)。
工作原理
String.lines() 返回按 \n、\r 或 \r\n 分割的行的 Stream<String>。它是懒加载的,并正确处理所有行分隔符,无需正则表达式。
相关文档