String hello = "Hello";
String.format("%s %s %s %s %s %s", hello, hello, hello, hello, hello, hello);
hello hello hello hello hello hello
Apakah variabel hello perlu diulang beberapa kali dalam panggilan ke metode format atau ada versi singkatan yang memungkinkan Anda menentukan argumen satu kali untuk diterapkan ke semua %s
token?
java
string
string-formatting
Carey
sumber
sumber
Anda perlu argumen indeks pengguna
%[argument_index$]
sebagai berikut:String hello = "Hello"; String.format("%1$s %1$s %1$s %1$s %1$s %1$s", hello);
Hasil:
hello hello hello hello hello hello
sumber
Satu kasus umum untuk menggunakan kembali argumen di
String.format
adalah dengan pemisah (misalnya";"
untuk CSV atau tab untuk konsol).System.out.println(String.format("%s %2$s %s %2$s %s %n", "a", ";", "b", "c")); // "a ; ; ; b"
Ini bukan hasil yang diinginkan.
"c"
tidak muncul di mana pun.Anda perlu menggunakan pemisah terlebih dahulu (dengan
%s
) dan hanya menggunakan indeks argumen (%2$s
) untuk kejadian berikut ini:System.out.println(String.format("%s %s %s %2$s %s %n", "a", ";", "b", "c")); // "a ; b ; c"
Spasi ditambahkan agar terbaca dan debugging. Setelah formatnya benar, spasi dapat dihapus di editor teks:
System.out.println(String.format("%s%s%s%2$s%s%n", "a", ";", "b", "c")); // "a;b;c"
sumber