忽略ASCII艺术中的转义序列。

8

对于我的命令行界面,加入一些小的ASCII艺术图案往往会让它更好看,但这些图案通常包含许多反斜杠。

例如:

System.out.println("  _____ _______       _____ _  __ ");
System.out.println(" / ____|__   __|/\   / ____| |/ / ");
System.out.println("| (___    | |  /  \ | |    | ' /  ");
System.out.println(" \___ \   | | / /\ \| |    |  <   ");
System.out.println(" ____) |  | |/ ____ \ |____| . \  ");
System.out.println("|_____/   |_/_/    \_\_____|_|\_\ ");

但是,由于每个\都需要成为\\,因此代码通常看起来非常难看,而且很难在“字体”中找到/修复错误。有没有办法告诉Java不要使用转义序列?


2
"\"是唯一的选择。如果你真的不想要双反引号,你可以始终1)创建一个静态String[]数组,其中包含每行文本,2)用某个“可接受”的标记字符替换你的斜杠,3)在循环中println()数组,4)使用String.replace()将标记字符替换为"\"。 - paulsm4
5个回答

3
不,Java没有类似于C#的“verbatim字符串文字”。如果你想做ASCII艺术,请考虑将其放入文本文件中,然后从代码中加载该文件。

2
很抱歉打扰这个帖子,但是对于其他寻找此类信息的人,请尝试使用Unicode!例如:\u0092代表“\”。

2

从文件中读取“image”,该文件可以在您的jar库中:)


1

抱歉,伙计。这种动物不存在。


0
或许有点晚了,但这是给那些仍在寻找解决方案的人;
可以使用Pattern.quote()来忽略转义序列。
System.out.println(Pattern.quote("|     |   ____    |       |        ______  "))
System.out.println(Pattern.quote("|     |  |        |       |       /      \ "))
System.out.println(Pattern.quote("|_____|  |__      |       |       |      | "))
System.out.println(Pattern.quote("|     |  |        |       |       |      | "))
System.out.println(Pattern.quote("|     |  |_____   |_____  |_____  \______/ "))
//I apologize for the rushed textblock
更多例子 要注意的一件事是转义序列\Q和\E将位于字符串的开头和结尾。

你的代码在我的电脑上无法编译(JDK 17,Windows 11)。反斜杠(即\)仍然需要转义(即\\)。 - Abra

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