2012-04-10 18 views
0

NumberHelper的Rails gsub方法顯示符號直到unicode'\ u20B8',但未顯示任何符號'\ u20B9'。Rails gsub未能顯示符號(Rupee Symbol)

導軌 - 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?

+0

順便說一下,gsub不是來自NumberHelper,它是ruby的String類的核心方法。 – d11wtq 2012-04-10 15:18:03

+0

是真的。這是一個輸入錯誤,我想從NumberHelper中提到number_from_currency,然後最後鑽出number_from_currency中使用的gsub是不能正確打印符號的那個。 – 2012-04-10 15:21:10

回答

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 

以上是從pry會話直接。

編輯|還請注意,您使用#gsub很奇怪。你可以使用格式字符串來處理你正在做的事情:

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

嗯,puts會這樣。 – 2012-04-10 15:19:07

+0

你把它放了嗎?還是你讓IRB爲你輸出?查看我的關於'#inspect'的說明。 – d11wtq 2012-04-10 15:22:02

+0

謝謝提供打印符號。 – 2012-04-10 15:28:20