Pemformatan String Java

Pemformatan String Java

Memformat string, memungkinkan karakter lain, sub-string atau nilai numerik, untuk dimasukkan ke dalam string utama, dengan cara tertentu. Pertimbangkan kodenya:

String str = String.format("There is %s, %s, %s and %s.", "orange", "banana", "pear", "lemon");
System.out.println(str);

Outputnya adalah:

There is orange, banana, pear and lemon.

Ada lima argumen dalam metode static format() dari kelas String ini. Argumen pertama adalah string utama yang menarik, yang isinya memiliki empat placeholder, yang masing-masing adalah %s. Bersama-sama, sisa argumen disebut sebagai daftar argumen. Semuanya sama, argumen pertama dalam daftar argumen sesuai dengan placeholder pertama di string utama (dari kiri). Argumen kedua dalam daftar sesuai dengan placeholder kedua di string utama. Argumen ketiga dalam daftar argumen sesuai dengan tempat penampung ketiga dalam string utama, dan seterusnya. Pada output, placeholder diganti dengan argumen yang sesuai dengan cara yang telah ditentukan dari daftar argumen.

Lima argumen dipertimbangkan di sini. Yang pertama bukan bagian dari daftar argumen yang dipertimbangkan. Ini sebenarnya disebut string format, meskipun masih harus diformat. Itu selalu sebuah string. Argumen lainnya, yang membentuk daftar argumen, mungkin bertipe berbeda, tidak harus, string. Catatan: placeholder di sini disebut penentu format.

Semua argumen di atas, dapat diganti dengan variabel, seperti yang ditunjukkan oleh segmen kode berikut:

String a = "orange", b = "banana", c = "pear", d = "lemon";
String fmtStr = "There is %s, %s, %s and %s.";
String str = String.format(fmtStr, a, b, c, d);
System.out.println(str);

Artikel ini menjelaskan dasar-dasar pemformatan string di Java menggunakan penentu format.

Sintaks Penentu Format

Sintaks untuk penentu format adalah:

%[argument_index$][flags][width][.precision]conversion

Itu harus dimulai dengan tanda persentase, %. Itu harus diakhiri dengan karakter yang disebut konversi. Dalam kode di atas, setiap specifier terdiri dari % dan ‘s’. ‘s’ adalah konversi. ‘s’ adalah singkatan dari string. Parameter lainnya, yang ditunjukkan dalam tanda kurung siku dalam sintaks, adalah opsional dan dijelaskan di bawah.

argument_index$
argument_index adalah bilangan bulat desimal. Dimulai dari 1. Dapat berupa $1, 2$, 3$, dll. Korespondensi normal untuk penentu dan argumen dalam daftar argumen adalah sebagai berikut: penentu pertama di sebelah kiri, dalam format string, sesuai dengan argumen pertama dalam daftar argumen (dari kiri); penentu kedua dari kiri, dalam format string, sesuai dengan argumen kedua dalam daftar argumen; penentu ketiga dari kiri, dalam format string, sesuai dengan argumen ketiga dalam daftar argumen; dan seterusnya. argument_index dapat digunakan untuk mengubah urutan ini. Segmen kode berikut membalik urutannya:

String str = String.format("Here: %4$c, %3$c, %2$c and %1$c", '1', '2', '3', '4');
System.out.println(str);

Outputnya adalah:

Here: 4, 3, 2 and 1

‘c’ dalam specifier sesuai dengan karakter dalam daftar argumen. Urutan normal adalah $1,2$,3$,4$. Karena urutan ini dibalik dalam format string, maka output keluar dalam urutan terbalik.

Konversi

Konversi dalam format string adalah karakter khusus. Setiap penentu format, dengan konversinya, sesuai dengan argumen dalam daftar argumen. Konversi adalah karakter. Tabel berikut memberikan konversi dan artinya:

 Conversion Characters and their Meanings

Conversion Meaning
b For formatting an argument that is Boolean
c For formatting an argument that is a Unicode character
s For formatting an argument that is a string
d For formatting an argument that is a decimal integer
f For formatting an argument that is a number with a decimal point
% For printing only % for the argument, ‘%’
n To cause the rest of the text on its right, to go on the next line at the output

Penggunaan ‘s’ dan ‘c’ telah diilustrasikan di atas. Meta-karakter konversi lainnya akan diilustrasikan di bagian ini.

Karakter Konversi b< br> Segmen kode berikut menunjukkan bagaimana penentu format untuk bool diganti dengan nilai boolean dari argumen yang sesuai:

String str = String.format("It is %b that he passed.", true);
System.out.println(str);

Outputnya adalah:

It is true that he passed.

Perhatikan bahwa argumen, benar, tidak dalam tanda kutip.

Karakter Konversi d
Segmen kode berikut menunjukkan bagaimana penentu format untuk bilangan bulat desimal diganti dengan nilai argumen yang sesuai:

String str = String.format("I have %d pens.", 5);
System.out.println(str);

Outputnya adalah:

I have 5 pens.

Perhatikan bahwa argumen, 5, tidak ada dalam tanda kutip karena itu bukan karakter.

Karakter Konversi f
Segmen kode berikut menunjukkan bagaimana penentu format untuk angka dengan titik desimal, diganti dengan nilai argumen yang sesuai:

String str = String.format("%f is an improper fraction.", 2.5);
System.out.println(str);

Pertama, perhatikan bahwa argumen, 2.5, tidak dalam tanda kutip karena bukan string. Outputnya adalah:

2.500000 is an improper fraction.

2.5 telah diformat ke 2.500000, pemformatan default. Itu dapat dibatasi hingga 2,5 seperti yang diberikan – lihat di bawah.

Karakter Konversi %
Karena simbol persentase digunakan untuk mengidentifikasi penentu format, skema harus dikembangkan untuk memiliki simbol % sebagai karakter biasa dalam format string. Skemanya sederhana: miliki % sebagai argumen karakter dalam daftar argumen. Kemudian gunakan karakter konversi % pada posisi dalam format string, di mana simbol persentase akan muncul. Segmen kode berikut menggambarkan hal ini:

String str = String.format("It is 100%%.",'%');
System.out.println(str);

Outputnya adalah:

It is 100%.

Penentu format adalah %%. % pertama dari pasangan, %%, adalah yang mengidentifikasi specifier. % kedua adalah karakter konversi. Sebagai argumen, % ada dalam tanda kutip tunggal.

Karakter Konversi n
Untuk menyebabkan sisa teks di sebelah kanan string format masuk ke baris berikutnya pada output, gunakan n. n adalah karakter konversi yang akan digunakan dalam penentu format. Ilustrasi:

String str = String.format("First sentence.%nSecond sentence.",'n');
System.out.println(str);

Outputnya adalah:

First sentence.
Second sentence.

.Parameter presisi dari Format Specifier

Parameter ini menunjukkan jumlah tempat desimal untuk angka dengan tempat desimal. Ini adalah bilangan bulat yang didahului oleh titik. Seperti yang disebutkan di atas, jumlah tempat desimal yang diharapkan untuk 2,5 adalah satu karakter; tetapi 6 karakter digunakan, memberikan 2.500.000. Segmen kode berikut membatasi ini hingga 3 tempat desimal:

String str = String.format("%.3f is an improper fraction.", 2.5);
System.out.println(str);

Outputnya adalah:

2.500 is an improper fraction.

Kode presisi di sini adalah.3.

Parameter lebar dari Format Specifier

Lebar adalah jumlah minimum karakter untuk penggantian dalam format string. Beberapa tipe argumen mengganti penentu format dengan lebar yang diharapkan. Namun, orang lain mungkin menggantinya dengan lebar yang lebih kecil atau lebih besar. Seperti yang diperhatikan di atas, lebar yang diharapkan untuk 2,5 adalah tiga karakter; tetapi 8 karakter digunakan, memberikan 2.500.000. Segmen kode berikut harus membatasi ini dengan lebar 4 karakter, dan tiga tempat desimal:

String str = String.format("%4.3f is an improper fraction.", 2.5);
System.out.println(str);

Outputnya adalah:

2.500 is an improper fraction.

Penentu format adalah %4.3f, di mana 4 adala
h lebar, dan 3 adalah jumlah tempat desimal. Sebenarnya ada 5 karakter pada output, termasuk titik desimal, jadi 4 sebenarnya diabaikan. Segmen kode berikut menghasilkan lebar 7 karakter dan 3 tempat desimal:

String str = String.format("%7.3f is an improper fraction.", 2.5);
System.out.println(str);

Outputnya adalah:

' '' '2.500 is an improper fraction.

Perhatikan bahwa dua karakter spasi mendahului angka untuk angka lengkap untuk menggantikan lebar tujuh karakter. Banyaknya tempat desimal adalah 3. Ada 7 karakter di sini, semuanya, termasuk titik desimal.

Parameter flags dari Format Specifier

Flag 0
Alih-alih mendahului angka dengan spasi, angka bisa didahului dengan 0. Segmen kode berikut menggambarkan hal ini:

String str = String.format("%07.3f is an improper fraction.", 2.5);
System.out.println(str);

Outputnya adalah:

002.500 is an improper fraction.

Penentu format yang tepat di sini adalah,

%07.3f

yang harus dibandingkan dengan sintaks penentu format,

%[argument_index$][flags][width][.precision]conversion

Urutan meta-karakter dari penentu format yang tepat menghormati urutan sintaks dari penentu format. Flag opsional, 0, muncul sebelum lebar opsional, 7, yang muncul sebelum presisi opsional,.3, sesuai dengan sintaks. ‘f’ adalah konversi (masih merupakan meta-karakter).

Tanda +
Dengan tanda +, hasil bilangan bulat selalu didahului oleh – atau +. Program berikut menggambarkan hal ini:

String str = String.format("result is %+d euros.", -5);
System.out.println(str);

Outputnya adalah:

result is -5 euros.

Lebar opsional dan parameter presisi tidak disertakan dengan penentu format yang tepat, %+d. Di sini, d adalah konversi untuk bilangan bulat.

Pertimbangkan segmen kode,

String str = String.format("result is %+d euros.", 5);
System.out.println(str);

Keluarannya adalah,

result is +5 euros.

Kesimpulan

Argumen untuk metode format String dibagi menjadi dua bagian. Bagian pertama adalah argumen pertama, yang harus berupa string. Ini adalah string yang menarik. Ini disebut format string, meskipun masih memiliki beberapa sub-string yang tepat (diformat). Argumen lainnya disebut sebagai daftar argumen. Daftar argumen memiliki substring nyata yang perlu diformat. Masing-masing substring ini sesuai dengan penentu format dalam string format. Penentu format menggunakan meta-karakter untuk memformat.

Related Posts