如何在ruby中显示ascii art字符串?

mbi*_*ras 3 ruby ascii

我正在尝试在ruby程序中使用artii制作的ascii艺术字符串.可以使用cli按预期生成字符串:

在此输入图像描述

然而,当我尝试将其保存为一个字符串,或者puts,p或者print它,它不工作.我想这可能是因为斜线需要逃脱,我试图做,但它看起来我也没有正确的.我如何从cli上的工作字符串转到ruby程序中的工作字符串,该字符串将字符串打印到stdout? 在此输入图像描述

banner = "
  _____       _             _   _       _       
 |  __ \     | |           | \ | |     | |      
 | |__) |   _| |__  _   _  |  \| | ___ | |_ ___ 
 |  _  / | | | '_ \| | | | | . ` |/ _ \| __/ _ \
 | | \ \ |_| | |_) | |_| | | |\  | (_) | |_  __/
 |_|  \_\__,_|_.__/ \__, | |_| \_|\___/ \__\___|
                     __/ |                      
                    |___/                       

"
print banner
print banner.gsub(/\\/, "\\\\")
puts "One slash: \\"
puts "Two slashes: \\\\"
Run Code Online (Sandbox Code Playgroud)

bet*_*ido 6

您还可以使用禁用插值和转义heredoc:

puts <<-'EOF'
 _____       _             _   _       _       
|  __ \     | |           | \ | |     | |      
| |__) |   _| |__  _   _  |  \| | ___ | |_ ___ 
|  _  / | | | '_ \| | | | | . ` |/ _ \| __/ _ \
| | \ \ |_| | |_) | |_| | | |\  | (_) | |_  __/
|_|  \_\__,_|_.__/ \__, | |_| \_|\___/ \__\___|
                    __/ |                      
                   |___/                       
EOF
Run Code Online (Sandbox Code Playgroud)


Ama*_*dan 4

你不能使用gsub反斜杠,因为它们不存在:你正试图倒掉牛奶。该语法"foo\ bar"将生成 string "foo bar",就像不存在反斜杠一样。这并不是说反斜杠没有显示——它从一开始就不在字符串中,所以没有什么可显示的gsub您基本上有两种解决方案:在程序执行之前手动将文字中的反斜杠加倍或通过编辑器替换 ( "foo\\ bar") :

artii 'Ruby Note' | sed 's/\\/\\\\/g'
Run Code Online (Sandbox Code Playgroud)

或者从某处读取字符串,这样 Ruby 语法就不会解释它:

banner = File.read(DATA)
puts banner
__END__
  _____       _             _   _       _       
 |  __ \     | |           | \ | |     | |      
 | |__) |   _| |__  _   _  |  \| | ___ | |_ ___ 
 |  _  / | | | '_ \| | | | | . ` |/ _ \| __/ _ \
 | | \ \ |_| | |_) | |_| | | |\  | (_) | |_  __/
 |_|  \_\__,_|_.__/ \__, | |_| \_|\___/ \__\___|
                     __/ |                      
                    |___/                       
Run Code Online (Sandbox Code Playgroud)

将显示您想要的内容。