代码之家  ›  专栏  ›  技术社区  ›  Jacob G.

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

  •  6
  • Jacob G.  · 技术社区  · 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
    

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

    1 回复  |  直到 5 年前
        1
  •  7
  •   Jacob G.    6 年前

    在Java12中,伴随原始字符串文本作为预览功能的是将添加到 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