原始字符串文字-删除前导缩进

时间:2018-11-18 02:51:51

标签: java string indentation rawstring java-12

编辑:原始字符串文字已从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

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

1 个答案:

答案 0 :(得分:7)

将原始字符串文字作为Java 12中的预览功能,是将添加到java.lang.String中的新方法,其中一种是String#align。其文档指出以下内容:

  

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

     

...

     

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

     

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

     

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

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

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

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

Test 1
    Test 2
        Test 3