Java 13 三重引号文本块 *无* 换行符

2022-09-02 20:15:57

带有分隔符的 Java 13 多行文本块功能正变得越来越有名。"""

但是,我经常需要整个段落而没有嵌入的换行符。

换句话说,以下代码片段:

String paragraph =
    """
    aaaa bbbb cccc
    dddd eeee ffff
    gggg hhhh iiii
    """;
System.out.println(paragraph);

如您所料,将生成以下内容:

aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii

...这通常非常有用。但是,在我的情况下,对于特别大的段落,我需要它来生成以下内容:

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii

(....并在以后处理文本流。

有没有办法为三重报价功能建立“无换行符”参数?


答案 1

该特性的设计者也意识到了这一要求(参见JEP368中的“新转义序列”)。因此,借助 JDK 14 的最新抢先体验版本,您可以使用尾随来转义行尾的新行:\

public class Main {
    public static void main(String[] args) {
        String paragraph =
            """
            aaaa bbbb cccc \
            dddd eeee ffff \
            gggg hhhh iiii \
            """;
        System.out.println(paragraph);
    }
}

指纹:

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii

答案 2

您可以使用自 Java-11 以来引入的 String.lines 作为:

String output = paragraph.lines().collect(Collectors.joining());

免费且值得一提的是,以下是两个不同代码块的JShell执行的屏幕截图:

enter image description here