Необработанные строковые литералы - удаление ведущих отступов

При тестировании необработанных строковых литералов (которые являются функцией предварительного просмотра в Java 12) я натолкнулся на следующий фрагмент кода:

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

Который выводит следующее:

          
        Test 1
            Test 2
                Test 3
                          

Тем не менее, я хочу, чтобы вывод был похож на следующее:

Test 1
    Test 2
        Test 3

Какой самый простой способ удалить начальный отступ, чтобы он соответствовал предполагаемому формату?

1 ответ

Сопровождение необработанных строковых литералов в качестве функции предварительного просмотра в 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
Другие вопросы по тегам