2012-12-07 44 views
2

我需要將簡單的「3.days」字符串轉換爲在屏幕上打印「3天」的字符串,該字符串將使用適當的語言環境,具體取決於打印單詞的語言。如何將「3.days」轉換爲Rails中的「3天」字符串?

我想這可能是一個簡單的方法來做到這一點在Rails上,我似乎無法找到。

+0

輸入來自哪裏?什麼是可能的價值範圍? –

+0

它來自數據庫中的字符串字段。值可以是「3.days」,「5.minutes」,「1.year」等。 – Martin

+0

用戶是否提供這些?我的觀點是,除非你對價值觀嚴格控制,否則你永遠不會想要在這些領域進行評估。我會用gsub選項 –

回答

7

致電inspect的結果。它已經覆蓋到返回字符串"3 days"

Loading development environment (Rails 3.2.6) 
irb(main):001:0> 3.days.inspect 
=> "3 days" 

在幕後,3.days只是返回的秒數在該時間段:

irb(main):001:0> puts 3.days 
259200 

如果你存儲的是整數值,你可以回到3你開始通過在一天內將數以秒數:

num_days = 3.days/1.day 
puts "#{num_days} days" # 3 days 
+1

也許我沒有更好地解釋自己:起源是一個字符串「3.days」而不是「3.days」。因此''「3.days」.inspect'返回'「\」3.days \「」'。不知道這聽起來是我的問題。 – Martin

2

如果你個人有T他作爲一個字符串輸入並且輸出也需要是一個字符串,一種解決方案是使用gsub替換'。'。 with''

1.9.3p194 :004 > '3.days'.gsub('.', ' ') 
=> "3 days" 
相關問題