0

NumberHelper 中的 Rails gsub 方法显示符号直到 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 会出现这种行为?

4

1 回答 1

0

我不明白问题是什么。它完全按照您的预期进行。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
于 2012-04-10T15:16:30.347 回答