2010-11-13 33 views
41

Ruby có bất kỳ lớp hoặc phương thức Formatter nào có thể được sử dụng để định dạng số cho những thứ như tiền tệ, v.v. hoặc có bất kỳ đá quý nào thực hiện việc này hay bạn phải viết cho riêng mình?Ruby có bất kỳ lớp định dạng số nào không?

+0

Bất kỳ cơ hội bạn có thể cung cấp cho chúng ví dụ whit? Câu hỏi khá rộng. –

Trả lời

67

Ruby có tất cả các trình định dạng in tiêu chuẩn, có sẵn hoặc qua printf, sprintf hoặc sử dụng 'formatstring' % [var1, ...].

>> '%.2f' % 3.14159 #=> "3.14" 
>> '%4s %-4s' % ['foo', 'bar'] #=> " foo bar " 
5

Bạn có thể sử dụng Kernel#sprintf (hoặc Kernel#format) và thực hiện theo cách đó. API Link.

6

Hãy thử điều này:

1234567890.123.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse 
=> "1,234,567,890.123" 

Taken từ một bình luận bởi @pguardiario trong một similar thread

+2

Một chút bị hỏng. '1234567890.1234.to_s.reverse.gsub (/ (\ d {3}) (? = \ D) /, '\\ 1,') đảo ngược =>" 1,234,567,890.1,234 "' –

+0

Cảm ơn bạn @ynkr –

Các vấn đề liên quan