Cách định dạng số 0..9 để hiển thị với 2 chữ số (KHÔNG phải là ngày)


215

Tôi muốn luôn hiển thị một số dưới 100 có 2 chữ số (ví dụ: 03, 05, 15 ...)

Làm cách nào tôi có thể nối 0 mà không sử dụng điều kiện để kiểm tra nếu nó dưới 10?

Tôi cần nối kết quả vào một Chuỗi khác, vì vậy tôi không thể sử dụng printf.

Câu trả lời:


528

Bạn có thể dùng:

String.format("%02d", myNumber)

Xem thêm các javadocs


1
Nếu myNumber là gấp đôi thì sao?
Fra

3
@Fra, sau đó bạn sẽ sử dụng String.format("%02.0f", myNumber)nếu bạn không muốn các số sau dấu thập phân
beny23

Dành cho những ai muốn đọc cụ thể về cú pháp định dạng chuỗi: Cú pháp định dạng chuỗi
Pony

Điều này sẽ tạo ra Cảnh báo kẻ lừa đảo Android "Hoàn toàn sử dụng ngôn ngữ mặc định là nguồn lỗi phổ biến: Thay vào đó, hãy sử dụng String.format (Locale, ...)"
Christopher Stock

1
@ChristopherStock Đó là một vấn đề hoàn toàn riêng biệt, liên quan đến việc sử dụng ngôn ngữ mặc định chính xác của thiết bị mà ứng dụng đang chạy - bạn có thể bỏ qua hoặc sửa nó, nhưng chỉ liên quan đến Android và địa phương. Không có gì để làm với định dạng chuỗi thực tế
Radu

55

Nếu bạn cần in số bạn có thể sử dụng printf

System.out.printf("%02d", num);

Bạn có thể dùng

String.format("%02d", num);

hoặc là

(num < 10 ? "0" : "") + num;

hoặc là

(""+(100+num)).substring(1);

2
Sử dụng một định dạng là chậm nhất, nhưng rõ ràng hơn và ít có khả năng sai lầm khủng khiếp. ví dụ: nếu num là -1. ;)
Peter Lawrey

42

Bạn có thể sử dụng điều này:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01

Đây phải là câu trả lời được chấp nhận! Kết quả của giải pháp thông qua String.format có thể thay đổi do cài đặt ngôn ngữ. (s. Cảnh báo kẻ lừa đảo Android "Hoàn toàn sử dụng ngôn ngữ mặc định là nguồn lỗi phổ biến: Sử dụng String.format (Locale, ...))
Christopher Stock

3

Lớp String đi kèm với các khả năng định dạng:

System.out.println(String.format("%02d", 5));

cho tài liệu đầy đủ, đây là tài liệu


Nó nóijava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha

2

Trong tài nguyên Android, nó khá đơn giản.

<string name="smth">%1$02d</string>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.