Hãy nói về định dạng chuỗi trong Ruby.
Tại sao cần format? Ví dụ: số dưới 10 vẫn có leading zero (01, 02, 03...), hoặc output console căn chỉnh cột đẹp mắt.
Các ngôn ngữ khác dùng printf, C developers quen thuộc. Printf cần format specifiers và danh sách giá trị.
Bắt Đầu Với Định Dạng Chuỗi Ruby
Ruby có sprintf nhưng chúng ta dùng cách idiomatic hơn (community style guide chưa thống nhất, nhưng cách này ổn).
Ví dụ:
time = 5 message = "Processing of the data has finished in %d seconds" % [time] puts message
Output => "Processing of the data has finished in 5 seconds"
%d là format specifier (danh sách specifiers), time là biến format. %d cho số nguyên.
Số thực dùng %f. Chỉ định số chữ số thập phân: %0.2f (2 chữ số).
score = 78.5431 puts "The average is %0.2f" % [score]
Output => The average is 78.54
Số được làm tròn: 78.549 → 78.55.
Chuyển Đổi & Padding
Số thập phân → hex: %x
puts "122 in HEX is %x" % [122]
Output => 122 in HEX is 7a
Padding số với leading zeros: %0<số zero>d
puts "The number is %04d" % [20]
Output => The number is 0020
Căn chỉnh cột (aligned columns): Thay 0 bằng dấu gạch ngang.

Hoặc dùng .ljust và .rjust của String:
names_with_ages = [["john", 20], ["peter", 30], ["david", 40], ["angel", 24]]
names_with_ages.each { |name, age| puts name.ljust(10) + age.to_s }
# Output:
# john 20
# peter 30
# david 40
# angel 24
Kết Luận
Ruby & Rails string formatting rất dễ, chỉ cần hiểu các format specifiers.
Hy vọng bạn thích chuyến đi nhanh vào thế giới định dạng output! Đăng ký newsletter để nhận thêm nội dung hay 🙂