如何在控制台中输出多行字符图像

3

我正在开发一款文字游戏,希望给它起一个引人注目的标题。我尝试使用文本转ASCII代码的工具生成一个漂亮的标题,然后将其复制粘贴到我的代码中以输出它,但是这种方法没有生效。

以下是我尝试的方法:

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

但似乎没有起作用。我知道它在JavaScript中有效,但我想知道它是否也适用于Java。


2
最有可能的解释是您的控制台不支持这些字符。例如,如果您正在运行Windows,则几乎没有机会。如果您正在运行Windows,那么PowerShell比cmd.exe更有希望。 - g00se
对我来说,它看起来是在工作的,但间距或换行不正确。 - Stewart
我认为在您的源代码中包含它会很棘手。我倾向于加载一个包含该字符串的UTF-8文件,例如THIS - g00se
1个回答

1

字符串字面量

字符串字面量 - 是由双引号"myText"包括的零个或多个字符组成的字符串。

在Java中无法创建多行字符串字面量,就像您尝试的那样。根据语言规范,它是一个编译时错误,在字符串字面量中存在行终止符。

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

为了使这样的字符串字面量编译通过,行终止符可以替换为一个新行字符\n
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""";

注意,开头的分隔符"""应该立即跟着换行符,而文本块的实际内容总是从下一行开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接