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

ali*_*ife 16 java string preview-feature java-13

带有"""分隔符的 Java 13 多行文本块工具正变得众所周知。

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

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

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

如您所料,产生以下内容:

aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
Run Code Online (Sandbox Code Playgroud)

...这通常非常有用。但是,就我而言,对于特别大的段落,我需要它来生成:

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
Run Code Online (Sandbox Code Playgroud)

(....稍后处理文本流。)

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

Jor*_*nee 25

此功能的设计者也意识到了这一要求(参见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);
    }
}
Run Code Online (Sandbox Code Playgroud)

印刷:

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
Run Code Online (Sandbox Code Playgroud)

  • 嗯,首先他们说能够按原样嵌入文字文本是一个非常重要的功能,它证明了语言更改的合理性,现在它自己获得了转义序列,我不得不想知道,比放置“aaaa bbbb cccc”有什么优势"`、`+"dddd eeee ffff "` 和 `+"gggg hhhh iiii "`,每个都在不同的行中...... (3认同)

Nam*_*man 5

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

String output = paragraph.lines().collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

作为补充,值得一提的是,这里是 JShell 执行两个不同代码块的屏幕截图:

在此输入图像描述

  • ...其作用与 `String output = paragraph.replaceAll("[\n\r]", "");` 相同 (4认同)