【发布时间】:2017-06-04 00:09:19
【问题描述】:
我只需要对哈希中的一个值进行着色,就像那样
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"}
没有任何颜色。
我应该怎么做才能获得正确的colorized输出?
【问题讨论】:
-
输出对我来说是正确的。如果你
puts h.values你会得到红色的 b。colorize将 ANSI 颜色序列添加到字符串。你期待什么? -
输出是正确的,但是所有的控制序列都被转义了,并且没有上色。自己检查一下
-
程序的输出是正确的,在 Windows 和 Linux 上一切都很好。
inspect的输出被正确转义。我没有看到问题。 -
不行,试试代码。问题是我不希望
inspect像那样转义输出 -
我确实在两个不同的系统上尝试过代码。正常工作。
inspect转义输出,以便您按照设计看到每个字符。如果你想要不同的东西,你不应该使用inspect。
标签: ruby colorize text-coloring