从 Java 中的字符串的两行之间读取
Read between two lines from a String in Java
我有一个文本行流,我必须从这个字符串中读取一个范围。
例如,给定的字符串:
str = "1 ddsfsdfs
d
6 s4. 3t
sdfdsfsfsf
dfdsfsfdfsdfd
345345
dsfsdf45v";
而且我必须在范围之间阅读,即从第 4 行到第 6 行。
怎么做?
看来我可以使用 java 8 个文本流。
str.lines().collect(...)
但还不太了解 API。欢迎任何玩家
Lines API是在Java11中添加的,如果你是运行Java11,那么对于输入String:
var str = "1 ddsfsdfs\n" +
" d\n" +
" 6 s4. 3t\n" +
" sdfdsfsfsf\n" +
" dfdsfsfdfsdfd\n" +
" 345345\n" +
" dsfsdf45v";
你可以这样做:
String line4To6 = str.lines().skip(4).limit(6 - 4).collect(Collectors.joining(","));
这将产生以下输出:
dfdsfsfdfsdfd, 345345
基本上,从字符串中读取特定行的公式是:
str.lines().skip(fromLineNumber).limit(toLineNumber - fromLineNumber).collect(Collectors.joining(","));
将从给定索引读取行,不包括起始索引处的行。
如果你是 运行 低于 11 但高于 8 的任何 Java 版本,同样的事情可以通过拆分输入创建 String
的 Stream
来实现由换行符组成的字符串,如下所示:
String line4To6 = Arrays.stream(str.split("\n")).skip(4).limit(6 - 4).collect(Collectors.joining(","));
我有一个文本行流,我必须从这个字符串中读取一个范围。
例如,给定的字符串:
str = "1 ddsfsdfs
d
6 s4. 3t
sdfdsfsfsf
dfdsfsfdfsdfd
345345
dsfsdf45v";
而且我必须在范围之间阅读,即从第 4 行到第 6 行。
怎么做?
看来我可以使用 java 8 个文本流。
str.lines().collect(...)
但还不太了解 API。欢迎任何玩家
Lines API是在Java11中添加的,如果你是运行Java11,那么对于输入String:
var str = "1 ddsfsdfs\n" +
" d\n" +
" 6 s4. 3t\n" +
" sdfdsfsfsf\n" +
" dfdsfsfdfsdfd\n" +
" 345345\n" +
" dsfsdf45v";
你可以这样做:
String line4To6 = str.lines().skip(4).limit(6 - 4).collect(Collectors.joining(","));
这将产生以下输出:
dfdsfsfdfsdfd, 345345
基本上,从字符串中读取特定行的公式是:
str.lines().skip(fromLineNumber).limit(toLineNumber - fromLineNumber).collect(Collectors.joining(","));
将从给定索引读取行,不包括起始索引处的行。
如果你是 运行 低于 11 但高于 8 的任何 Java 版本,同样的事情可以通过拆分输入创建 String
的 Stream
来实现由换行符组成的字符串,如下所示:
String line4To6 = Arrays.stream(str.split("\n")).skip(4).limit(6 - 4).collect(Collectors.joining(","));