Một trường hợp phổ biến để sử dụng lại đối số trong String.format
là bằng dấu phân cách (ví dụ: ";"
đối với CSV hoặc tab cho bảng điều khiển).
System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; ; ; b"
Đây không phải là đầu ra mong muốn. "c"
không xuất hiện ở bất cứ đâu.
Bạn cần sử dụng dấu phân cách trước (với %s
) và chỉ sử dụng chỉ số đối số ( %2$s
) cho các lần xuất hiện sau:
System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c"));
// "a ; b ; c"
Không gian được thêm vào để dễ đọc và gỡ lỗi. Khi định dạng có vẻ đúng, có thể xóa khoảng trắng trong trình soạn thảo văn bản:
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c"));
// "a;b;c"