从 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 版本,同样的事情可以通过拆分输入创建 StringStream 来实现由换行符组成的字符串,如下所示:

String line4To6 = Arrays.stream(str.split("\n")).skip(4).limit(6 - 4).collect(Collectors.joining(","));