gpt4 book ai didi

ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:01 24 4
gpt4 key购买 nike

我的目标是转换表单输入,例如“100 兆字节”或“1 GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:

def quota_convert
@regex = /([0-9]+) (.*)s/
@sizes = %w{kilobyte megabyte gigabyte}
m = self.quota.match(@regex)
if @sizes.include? m[2]
eval("self.quota = #{m[1]}.#{m[2]}")
end
end

这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了 eval 看起来疯狂不安全。所以,功能正常,但今晚我睡不好。

有什么指导吗?

编辑:------

好的。出于某种原因,带有 (.*?) 的正则表达式在我的设置中无法正常工作,但我已经使用 Rails 解决了这个问题。另外,我意识到字节对我来说会更好。

def quota_convert
@regex = /^([0-9]+\.?[0-9]*?) (.*)/
@sizes = { 'kilobyte' => 1024, 'megabyte' => 1048576, 'gigabyte' => 1073741824}
m = self.quota.match(@regex)
if @sizes.include? m[2].singularize
self.quota = m[1].to_f*@sizes[m[2].singularize]
end
end

这捕获了“1 兆字节”、“1.5 兆字节”和大多数其他东西(我希望如此)。无论如何,它都会使它成为单数版本。然后它进行乘法运算并给出神奇的答案。

这是合法的吗?

再次编辑:请参阅下面的答案。比我的废话干净多了。

最佳答案

您可以使用 Rails ActiveHelper number_to_human_size .

关于ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com