6

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


在测试原始字符串文字(Java 12 中的预览功能)时,我遇到了以下代码片段:

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

输出以下内容:

          
        Test 1
            Test 2
                Test 3
                          

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

Test 1
    Test 2
        Test 3

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

4

1 回答 1

7

作为 Java 12 中的预览功能的原始字符串文字是将添加到其中的新方法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
于 2018-11-18T02:51:50.573 回答