使用 Ruby/Sinatra 将字符串格式化为货币
Format String as Currency with Ruby/Sinatra
我在 Ruby/Sinatra 中有一个应用程序,它使用 API 到 return 一个字符串,我需要将其格式化为货币,但没有看到任何简单的方法来执行此操作。
具体来说,我希望将字符串 665778 打印为 $665,778
我尝试实施 Sinatra::Numeric::Helpers 但没有用,我怀疑它已经过时了。请指教。在 Rails 中似乎很容易做到,但在 Sinatra 中则不然。
I'd like a string 665778 to print out as 5,778
借用 this answer 的千位分组代码得到一个简洁的解决方案:
def number_to_currency(num)
"$#{num.to_s.gsub(/\d(?=(...)+$)/, '[=10=],')}"
end
试试这个函数...它在 Rails 中等同于 number_to_currency:
def to_cash(unit = "R$",separator = ",",delimiter = ".")
mystring = sprintf("%s %.2f",unit, self)
mystring = mystring.gsub(".",separator)
pos = mystring.match(separator).begin(0) - 3
while !(/[0-9]/.match(mystring[pos])== nil) do
mystring.insert(pos,delimiter)
pos-=3
end
return mystring
end
我在 Ruby/Sinatra 中有一个应用程序,它使用 API 到 return 一个字符串,我需要将其格式化为货币,但没有看到任何简单的方法来执行此操作。
具体来说,我希望将字符串 665778 打印为 $665,778
我尝试实施 Sinatra::Numeric::Helpers 但没有用,我怀疑它已经过时了。请指教。在 Rails 中似乎很容易做到,但在 Sinatra 中则不然。
I'd like a string 665778 to print out as 5,778
借用 this answer 的千位分组代码得到一个简洁的解决方案:
def number_to_currency(num)
"$#{num.to_s.gsub(/\d(?=(...)+$)/, '[=10=],')}"
end
试试这个函数...它在 Rails 中等同于 number_to_currency:
def to_cash(unit = "R$",separator = ",",delimiter = ".")
mystring = sprintf("%s %.2f",unit, self)
mystring = mystring.gsub(".",separator)
pos = mystring.match(separator).begin(0) - 3
while !(/[0-9]/.match(mystring[pos])== nil) do
mystring.insert(pos,delimiter)
pos-=3
end
return mystring
end