Java String Format

Trong java việc xử lý format liên quan đến String bạn thường đọc trong Formatter. Tôi đã đọc và viết một bài hướng dẫn rõ ràng và dễ dàng sử dụng các format trong Java

String Formatting

Một trong những cách thông thường để format string là sử dụng hàm String.format()

String output = String.format("%s = %d", "joe", 35);

Nếu sử dụng format cho system output, bạn có thể sử dụng các hàm printf() hoặc format() của System.out và System.err

System.out.printf("My name is: %s%n", "ngoc");

Nếu sử dụng trong việc tạo một Formating liên kết StringBuilder, để tạo format bạn sử dụng hàm format(), sẽ tự động appended vào StringBuffer

StringBuilder sbuf = new StringBuilder();
Formatter fmt = new Formatter(sbuf);
fmt.format("PI = %f%n", Math.PI);
System.out.print(sbuf.toString());
// you can continue to append data to sbuf here.

Format Specifiers

Đây là tham khảo refer nhanh đến tất cả chuyển đổi chi tiết được hỗ trợ

SPECIFIER APPLIES TO OUTPUT
%a floating point (except BigDecimal) Hex output of floating point number
%b Any type “true” if non-null, “false” if null
%c character Unicode character
%d integer (incl. byte, short, int, long, bigint) Decimal Integer
%e floating point decimal number in scientific notation
%f floating point decimal number
%g floating point decimal number, possibly in scientific notation depending on the precision and value.
%h any type Hex String of value from hashCode() method.
%n none Platform-specific line separator.
%o integer (incl. byte, short, int, long, bigint) Octal number
%s any type String value
%t Date/Time (incl. long, Calendar, Date and TemporalAccessor) %t is the prefix for Date/Time conversions. More formatting flags are needed after this. See Date/Time conversion below.
%x integer (incl. byte, short, int, long, bigint) Hex string.

Date and Time Formatting

Lưu ý: Sử dụng các ký tự định dạng bằng "%T" thay vì "%t" trong bảng dưới đây để tạo chữ hoa đầu ra

FLAG NOTES
%tA Full name of the day of the week, e.g. “Sunday“, “Monday“
%ta Abbreviated name of the week day e.g. “Sun“, “Mon“, etc.
%tB Full name of the month e.g. “January“, “February“, etc.
%tb Abbreviated month name e.g. “Jan“, “Feb“, etc.
%tC Century part of year formatted with two digits e.g. “00” through “99”.
%tc Date and time formatted with “%ta %tb %td %tT %tZ %tY” e.g. “Fri Feb 17 07:45:42 PST 2017“
%tD Date formatted as “%tm/%td/%ty“
%td Day of the month formatted with two digits. e.g. “01” to “31“.
%te Day of the month formatted without a leading 0 e.g. “1” to “31”.
%tF ISO 8601 formatted date with “%tY-%tm-%td“.
%tH Hour of the day for the 24-hour clock e.g. “00” to “23“.
%th Same as %tb.
%tI Hour of the day for the 12-hour clock e.g. “01” – “12“.
%tj Day of the year formatted with leading 0s e.g. “001” to “366“.
%tk Hour of the day for the 24 hour clock without a leading 0 e.g. “0” to “23“.
%tl Hour of the day for the 12-hour click without a leading 0 e.g. “1” to “12“.
%tM Minute within the hour formatted a leading 0 e.g. “00” to “59“.
%tm Month formatted with a leading 0 e.g. “01” to “12“.
%tN Nanosecond formatted with 9 digits and leading 0s e.g. “000000000” to “999999999”.
%tp Locale specific “am” or “pm” marker.
%tQ Milliseconds since epoch Jan 1 , 1970 00:00:00 UTC.
%tR Time formatted as 24-hours e.g. “%tH:%tM“.
%tr Time formatted as 12-hours e.g. “%tI:%tM:%tS %Tp“.
%tS Seconds within the minute formatted with 2 digits e.g. “00” to “60”. “60” is required to support leap seconds.
%ts Seconds since the epoch Jan 1, 1970 00:00:00 UTC.
%tT Time formatted as 24-hours e.g. “%tH:%tM:%tS“.
%tY Year formatted with 4 digits e.g. “0000” to “9999“.
%ty Year formatted with 2 digits e.g. “00” to “99“.
%tZ Time zone abbreviation. e.g. “UTC“, “PST“, etc.
%tz Time Zone Offset from GMT e.g. “ -0800 “.

Argument Index

Chỉ định index cho biến số trong điều kiện format

    String.format("%2$s", 32, "Hello"); // prints: "Hello"

Nhìn ở trên bạn sẽ thấy việc chỉ định index cho danh sách biến, sẽ bắt đầu bằng "%' và kết thúc bằng ký tự "$"

Formatting an Integer

Sử dụng %d để format cho 1 số kiểu int : byte, short, int, long và Big Integer

Kiểu mặc định

   String.format("%d", 93); // prints 93

Kiểu với độ rộng width

    String.format("|%20d|", 93); // prints: |                  93|

Kiểu độ rộng bên bên phải

    String.format("|%-20d|", 93); // prints: |93                  |

Thêm zeros

    String.format("|%020d|", 93); // prints: |00000000000000000093|

Octal output:

    String.format("|%o|"), 93); // prints: 135

Hex output:

    String.format("|%x|", 93); // prints: 5d

String and Character Conversion

Hiển thị toàn bộ String

  String.format("|%s|", "Hello World"); // prints: "Hello World"

Format hiển thị tối đa số ký tự

   String.format("|%.5s|", "Hello World"); // prints: |Hello|

Tổng kết

Trên là hướng dẫn cơ bản về định dạng trong chữ số trong java, rất tiện ích cho việc hiện thị chữ số một cách nhanh chóng, bạn có thể dễ dàng sử dụng chúng trong các bài toán code của mình.