我需要上色只有一個哈希值,像如何上色紅寶石哈希一個屬性
require 'colorize'
h = {a: 'a', b: 'b'.colorize(:red), c: 'c'}
h[:b]
返回此
"\e[0;31;49mb\e[0m"
因此puts h[:b]
作品如預期,而h.to_s
或h.inspect
給出這個
"{:a=>\"\\e[0;31;49ma\\e[0m\", :b=>\"\\e[0;34;49mb\\e[0m\"}"
正如你所看到的,所有的控制序列都被轉義了。
由於h
同時使用puts h
被隱式轉換成字符串,所有我在終端得到的是:
{:a=>"a", :b=>"\e[0;31;49mb\e[0m", :c=>"c"}
不含任何色素。
我該怎麼做才能得到正確的彩色輸出?
輸出看起來正確的給我。如果你把h.values放在紅色的b中, 'colorize'將ANSI顏色序列添加到字符串中。你在期待什麼? –
輸出正確,但所有控制序列都已轉義,且未着色。自己檢查 –
該程序的輸出是正確的,在Windows和Linux上,所有內容都可以正常顯示。 'inspect'的輸出已正確轉義。我沒有看到問題。 –