我需要将字节的整数表示格式化为友好的东西,我希望在Ruby或Rails中有一个实用程序函数可以为我做格式化(当然,使我的懒惰永久化。)
我正在寻找一些看起来像的东西:
format_bytes(1024) -> "1 KB"
format_bytes(1048576) -> "1 MB"
看起来ActiveSupport中有一些东西要反过来做,但我还没有找到办法在这方面做到这一点。
如果没有一个存在,有没有人有一个特别优雅的解决方案?
答案 0 :(得分:38)
Number to human size正是您要找的。 p>
require 'action_view'
include ActionView::Helpers::NumberHelper
number_to_human_size(123) # => 123 Bytes
number_to_human_size(1234) # => 1.2 KB
number_to_human_size(12345) # => 12.1 KB
number_to_human_size(1234567) # => 1.2 MB
number_to_human_size(1234567890) # => 1.1 GB
number_to_human_size(1234567890123) # => 1.1 TB
number_to_human_size(1234567, :precision => 2) # => 1.18 MB
number_to_human_size(483989, :precision => 0) # => 473 KB
number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
答案 1 :(得分:1)
接受的答案仍然有效,但在较新的轨道中需要actionpack而不是actionview。
require 'actionpack'
答案 2 :(得分:1)
接受回答它是完美的,但我不需要前两行。 我只说:
number_to_human_size(123) # => 123 Bytes
number_to_human_size(1234) # => 1.2 KB
number_to_human_size(12345) # => 12.1 KB
number_to_human_size(1234567) # => 1.2 MB
number_to_human_size(1234567890) # => 1.1 GB
number_to_human_size(1234567890123) # => 1.1 TB
number_to_human_size(1234567, :precision => 2) # => 1.18 MB
number_to_human_size(483989, :precision => 0) # => 473 KB
number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
并且像魅力一样。