2010-05-11 33 views

Trả lời

15

String.format chỉ là một lối tắt đến Formatter, đây là trình định dạng "printf-style". Ở phía bên kia, MessageFormat sử dụng một quy ước định dạng khác, như được mô tả trong tài liệu được liên kết.

Sử dụng đầu tiên "cho biện minh bố trí và sắp xếp, các định dạng phổ biến đối với số, chuỗi, và ngày/dữ liệu thời gian, và đầu ra bản địa đặc thù" và thứ hai "để tạo ra các thông điệp nối theo cách ngôn ngữ trung lập".

50

Đặt đơn giản, sự khác biệt chính là trong chuỗi định dạng:

  1. MessageFormat.format() định dạng chuỗi chấp nhận vị trí lập luận (ví dụ {0}, {1}.). Ví dụ:

    "This is year {0}!"

    Các nhà phát triển không phải lo lắng về các loại tranh luận, bởi vì họ đang có, thường xuyên nhất, công nhận và formated theo hiện Locale.

  2. String.format() chuỗi định dạng chấp nhận thông số loại đối số (ví dụ: %d cho số, %s cho chuỗi). Ví dụ:

    "This is year %d!"

    String.format() thường cung cấp cho bạn kiểm soát nhiều hơn về cách lập luận được hiển thị nhờ nhiều lựa chọn bạn có thể chỉ định với Bộ xác định kiểu. Ví dụ: định dạng chuỗi "%-6.2f" chỉ định hiển thị số dấu phẩy động được căn trái với phút. chiều rộng 6 ký tự và độ chính xác của 2 chữ số thập phân.

Chỉ cần xem javadoc của cả hai phương pháp để tìm hiểu thêm chi tiết.

+0

cảm ơn bạn rất nhiều :) – gokareless

+1

Bạn có phần nào kiểm soát định dạng trong MessageFormat.format, ví dụ: "{0, number, integer}". –

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