Java 13 поставила долгожданные многострочные строки или текстовые блоки . Вам больше не нужно объединять строки, которые занимают несколько строк или экранировать специальные символы, что действительно улучшает читабельность вашего кода. Текстовые блоки являются функцией языка предварительного просмотра , что означает, что они должны быть явно включены в компиляторе Java и во время выполнения с использованием флага --enable-preview
.
Вот пример текстового блока:
1
2
3
4
5
6
|
String textBlock = "" " <html> <body> <p style= "color:red" >This is a text block</p> </body> </html> "" "; |
Как показано выше, текстовый блок заключен в три двойные кавычки ( """
). За пробелом """
не должно следовать никаких непробельных символов, т.е. фактический текст должен начинаться со строки, следующей за открывающим разделителем. Вам не нужно экранировать какие-либо специальные символы в текстовом блоке, и это здорово!
В предыдущих версиях Java вам пришлось бы писать так:
1
2
3
4
5
|
final String old = "<html>\n" + "\t<body>\n" + "\t\t<p style=\"color:red\">This is a text block</p>\n" + "\t</body>\n" + "</html>" ; |
Фактически, в этом примере textBlock == old
поскольку оба имеют одинаковое содержимое и ссылаются на один и тот же объект в пуле String
.
Теперь давайте посмотрим, как обрабатывается начальный пробел, рассмотрев следующие два текстовых блока:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
String textBlock1 = "" " <html> <body> <p style= "color:red" >This is a text block</p> </body> </html> "" "; String textBlock2 = "" " <html> <body> <p style= "color:red" >This is a text block</p> </body> </html> "" "; |
Если вы распечатаете эти два текстовых блока, первый будет напечатан как:
1
2
3
4
5
|
<html> <body> <p style= "color:red" >This is a text block</p> </body> </html> |
а второй как:
1
2
3
4
5
|
<html> <body> <p style= "color:red" >This is a text block</p> </body> </html> |
Крайний левый символ без пробелов в любой из строк в текстовом блоке или крайний левый закрывающий разделитель определяет «начальную точку» всего блока, и пробел сохраняется в каждой строке от этой начальной точки.
Еще один момент, на который следует обратить внимание, это то, что конечные пробелы в конце каждой строки удаляются в текстовых блоках, но вы можете использовать восьмеричную escape-последовательность \040
чтобы сохранить ее, как показано ниже:
1
2
3
|
String octal = "" " line 1 \ 040 line 2 "" "; |
Опубликовано на Java Code Geeks с разрешения Фахда Шарифа, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Java 13: текстовые блоки Мнения, высказанные участниками Java Code Geeks, являются их собственными. |