Как вывести изображение многострочного символа в консоль

Я разрабатываю текстовую игру и хочу сделать название чем-то запоминающимся. Я попытался использовать конвертер текста в ASCII, чтобы сделать красивый заголовок, а затем скопировать и вставить его в свой код для вывода, но это не сработало.

Вот что я пытался сделать:

      System.out.println("
██████╗ ██╗   ██╗███╗   ██╗ ██████╗ ███████╗ ██████╗ ███╗   ██╗     ██████╗ ███████╗                            
██╔══██╗██║   ██║████╗  ██║██╔════╝ ██╔════╝██╔═══██╗████╗  ██║    ██╔═══██╗██╔════╝                            
██║  ██║██║   ██║██╔██╗ ██║██║  ███╗█████╗  ██║   ██║██╔██╗ ██║    ██║   ██║█████╗                              
██║  ██║██║   ██║██║╚██╗██║██║   ██║██╔══╝  ██║   ██║██║╚██╗██║    ██║   ██║██╔══╝                              
██████╔╝╚██████╔╝██║ ╚████║╚██████╔╝███████╗╚██████╔╝██║ ╚████║    ╚██████╔╝██║                                 
╚═════╝  ╚═════╝ ╚═╝  ╚═══╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝  ╚═══╝     ╚═════╝ ╚═╝                                 
                                                                                                                
    ████████╗██╗  ██╗███████╗    ███████╗ ██████╗ ██████╗  ██████╗  ██████╗ ████████╗████████╗███████╗███╗   ██╗
    ╚══██╔══╝██║  ██║██╔════╝    ██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔═══██╗╚══██╔══╝╚══██╔══╝██╔════╝████╗  ██║
       ██║   ███████║█████╗      █████╗  ██║   ██║██████╔╝██║  ███╗██║   ██║   ██║      ██║   █████╗  ██╔██╗ ██║
       ██║   ██╔══██║██╔══╝      ██╔══╝  ██║   ██║██╔══██╗██║   ██║██║   ██║   ██║      ██║   ██╔══╝  ██║╚██╗██║
       ██║   ██║  ██║███████╗    ██║     ╚██████╔╝██║  ██║╚██████╔╝╚██████╔╝   ██║      ██║   ███████╗██║ ╚████║
       ╚═╝   ╚═╝  ╚═╝╚══════╝    ╚═╝      ╚═════╝ ╚═╝  ╚═╝ ╚═════╝  ╚═════╝    ╚═╝      ╚═╝   ╚══════╝╚═╝  ╚═══╝");

Но, похоже, это не сработало. Я знаю, что это работает в JavaScript, но мне было интересно, будет ли это работать и в Java.

1 ответ

Строковые литералы

Строковый литерал — это строка, состоящая из нуля или более символов, заключенных в двойные кавычки. "myText".

В Java невозможно создать многострочный строковый литерал, как вы пытались это сделать. Согласно спецификации языка, это ошибка времени компиляции, завершение строки присутствует в боковой части строки.

      String invalidLiteral = "line1
                         line2
                         ..."; // will cause a compilation error

Чтобы компилировать такой строковый литерал, конец строки можно заменить символом новой строки.

      String validString = "line1\nline2\nline3";

Результирующая строка может стать очень длинной, чтобы сделать ее читаемой, вы можете разбить строку на куски, объединенные знаком плюс. +, добавив символ новой строки \nк каждому куску.

      String validConcatinatedString = "line1\n" +
                                 "line2\n" +
                                 "line3";

Хотя это будет работать, это может быть утомительно.

Текстовые блоки

С Java 15 вы можете создать многострочную строку, используя доступные текстовые блоки .

Чтобы создать текстовый блок, нужно заключить целевой многострочный текст в тройные двойные кавычки.

      String myASCIIArt = """ // no text after the opening delimiter
              Your amazing 
                  ASCII art 
                       here""";

Обратите внимание , что открывающий разделитель """сразу же должно следовать окончание строки, а фактическое тело текстового блока всегда начинается со следующей строки.

Другие вопросы по тегам