Rails gsub 无法显示 u20B9(卢比符号)的符号



Rails gsub 方法从 NumberHelper 显示符号直到 unicode '\u20B8' 但未能显示任何符号 '\u20B9'。

导轨 - 3.0.5红宝石 - 1.9.2-p0

在 Rails 控制台中,执行以下操作:

ruby-1.9.2-p0 > value = "123.45"
 => "123.45" 
ruby-1.9.2-p0 > unit = "u20B9"
 => "u20B9" 
ruby-1.9.2-p0 > puts unit
₹
 => nil 
ruby-1.9.2-p0 > format = "%u %n"
 => "%u %n" 
ruby-1.9.2-p0 > format.gsub(/%n/, value).gsub(/%u/, rup)
 => "u20B9 123.45" 
ruby-1.9.2-p0 > format.gsub(/%n/, value).gsub(/%u/, "u20B8")
 => "₸ 123.45" 
ruby-1.9.2-p0 > 

请告知为什么 gsub 会有这种行为?

我不明白问题是什么。 它完全按照您的预期进行。 IRB 向您显示#inspect输出,该输出生成带有引号和 unicode 转义序列的字符串。 只需puts它即可实际看到它的渲染:

>> unit = "u20B9"
=> "₹"
>> value = "123.45"
=> "123.45"
>> format = "%u %n"
=> "%u %n"
>> puts format.gsub(/%n/, value).gsub(/%u/, unit)
₹ 123.45
=> nil

以上直接来自撬动会议。

编辑 |另请注意,您对#gsub的使用很奇怪。 您可以使用格式字符串来执行操作:

>> puts "%s %.2f" % [unit, value]
=> ₹ 123.45

最新更新