在rails中从价格字段中删除$和

时间:2013-08-19 21:50:59

标签: ruby-on-rails ruby input

我在十进制类型列中将价格字符串保存到我的数据库中。价格是这样的“$ 123.99”这很好,因为我写了一些代码来删除“$”(美元符号和空格)。但是我似乎忘记了价格可能包含逗号。所以“$ 1,234.99”打破了我的代码。我怎样才能删除逗号?

这是我删除美元符号和空格的代码:

def price=(price_str)
  write_attribute(:price, price_str.sub("$ ", ""))
  # possible code to remove comma also?
end

1 个答案:

答案 0 :(得分:4)

您可以轻松地通过两种方式实现目标。

String的delete方法适用于删除所有出现的目标字符串:

'$ 1.23'.delete('$ ,') # => "1.23"
'$ 123,456.00'.delete('$ ,') # => "123456.00"

或者,使用String's tr方法:

'$ 1.23'.tr('$, ', '') # => "1.23"
'$ 123,456.00'.tr('$ ,', '') # => "123456.00"

tr需要搜索一串字符,并使用一串字符来替换它们。将其视为一系列gsub方法,每个字符一个。

但等等!还有更多!如果替换字符串为空,则将删除搜索字符串中的所有字符。