编辑:从JDK 12中删除了原始字符串文字,但是我将保留此问题,并在重新引入原始字符串文字时对其进行相应的编辑。

在测试Raw String Literals(Java 12中的预览功能)时,我遇到了以下代码片段:

System.out.println(`
        Test 1
            Test 2
                Test 3
`);

输出以下内容:
          
        Test 1
            Test 2
                Test 3
               

但是,我希望输出类似于以下内容:
Test 1
    Test 2
        Test 3

删除前导缩进以匹配预期格式的最简单方法是什么?

最佳答案

在Java 12中,将Raw String Literals作为预览功能附带的新方法将添加到java.lang.String中,其中一种是String#align。它的文档指出以下内容:

删除周围的垂直和水平空白边距
多行字符串的基本主体,同时保留相对
缩进。

...

对于每条非空白行,最小的前导空白字符为
删除。每个空格字符都被视为一个字符。在
特别是,制表符"\t"(U + 0009)被认为是
单个字符;它不会扩展。

如果有任何空白行,则删除前导行和尾行。尾随空格是
保留。

每行后缀一个换行符"\n"(U + 000A)。

要使用此方法,我们可以将代码更改为以下内容:

System.out.println(`
    Test 1
        Test 2
            Test 3
`.align());

输出以下内容(后缀换行符,如文档所述):
Test 1
    Test 2
        Test 3

08-08 00:44
查看更多