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

时间:2016-05-16 23:14:57

标签: ruby ascii

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

enter image description here

但是,当我尝试将其另存为字符串putspprint时,它无法正常工作。我认为这可能是因为我需要逃避斜线,但我看起来似乎也没有正确。我将如何从cli上的工作字符串转到ruby程序中的工作字符串,该字符串将字符串打印到stdout? enter image description here

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

"
print banner
print banner.gsub(/\\/, "\\\\")
puts "One slash: \\"
puts "Two slashes: \\\\"

2 个答案:

答案 0 :(得分:6)

您还可以使用heredoc that disables interpolation and escaping

puts <<-'EOF'
 _____       _             _   _       _       
|  __ \     | |           | \ | |     | |      
| |__) |   _| |__  _   _  |  \| | ___ | |_ ___ 
|  _  / | | | '_ \| | | | | . ` |/ _ \| __/ _ \
| | \ \ |_| | |_) | |_| | | |\  | (_) | |_  __/
|_|  \_\__,_|_.__/ \__, | |_| \_|\___/ \__\___|
                    __/ |                      
                   |___/                       
EOF

答案 1 :(得分:4)

你不能gsub反斜杠,因为它们不在那里:你正试图取出牛奶。语法"foo\ bar"将生成字符串"foo bar",就像反斜杠不存在一样。并不是反斜杠没有显示 - 它首先从不在字符串中,因此gsub没有任何内容。您基本上有两个解决方案:在程序执行之前,手动或通过编辑器替换("foo\\ bar"将文本中的反斜杠加倍:

artii 'Ruby Note' | sed 's/\\/\\\\/g'

或从某处读取字符串,因此不会被Ruby语法解释:

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

将显示您想要的内容。