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 に答える