Ubah String menjadi Judul Kasus

1. Perkenalan

Dalam tutorial singkat ini, kami akan menunjukkan cara mengonversi String ke format kasus judul di Java.

Kami akan menunjukkan berbagai cara menerapkan metode kustom dan kami juga akan menunjukkan cara melakukannya menggunakan pustaka pihak ketiga.

2. Solusi Inti Java

2.1. Iterasi Melalui Karakter String

Salah satu cara untuk mengubah kasus String menjadi judul adalah dengan melakukan iterasi melalui semua karakter String .

Untuk melakukannya, saat kami menemukan pemisah kata, kami menggunakan huruf besar untuk karakter berikutnya. Setelah itu, kami mengubah sisa karakter menjadi huruf kecil hingga kami mencapai pemisah kata berikutnya.

Mari gunakan spasi sebagai pemisah kata dan terapkan solusi ini:

public static String convertToTitleCaseIteratingChars(String text) { if (text == null || text.isEmpty()) { return text; } StringBuilder converted = new StringBuilder(); boolean convertNext = true; for (char ch : text.toCharArray()) { if (Character.isSpaceChar(ch)) { convertNext = true; } else if (convertNext) { ch = Character.toTitleCase(ch); convertNext = false; } else { ch = Character.toLowerCase(ch); } converted.append(ch); } return converted.toString(); }

Seperti yang bisa kita lihat, kita menggunakan metode Character.toTitleCase untuk melakukan konversi, karena ini memeriksa kasus judul yang setara dengan Karakter di Unicode.

Jika kami menguji metode ini menggunakan input ini:

tHis IS a tiTLe tHis, IS a tiTLe

Kami mendapatkan keluaran yang diharapkan berikut:

This Is A Title This, Is A Title

2.2. Memisahkan Menjadi Kata

Pendekatan lain untuk melakukan ini adalah dengan membagi String menjadi kata-kata, mengubah setiap kata menjadi kapitalisasi judul, dan terakhir menggabungkan semua kata lagi menggunakan pemisah kata yang sama.

Mari kita lihat dalam kode, menggunakan lagi ruang putih sebagai pemisah kata, dan API Stream yang bermanfaat :

private static final String WORD_SEPARATOR = " "; public static String convertToTitleCaseSplitting(String text) { if (text == null || text.isEmpty()) { return text; } return Arrays .stream(text.split(WORD_SEPARATOR)) .map(word -> word.isEmpty() ? word : Character.toTitleCase(word.charAt(0)) + word .substring(1) .toLowerCase()) .collect(Collectors.joining(WORD_SEPARATOR)); }

Menggunakan input yang sama seperti sebelumnya, kita mendapatkan output yang sama persis:

This Is A Title This, Is A Title

3. Menggunakan Apache Commons

Jika kami tidak ingin menerapkan metode kustom kami sendiri, kami dapat menggunakan pustaka Apache Commons. Penyiapan untuk pustaka ini dijelaskan di artikel ini.

Hal ini memberikan para WordUtils kelas, yang memiliki capitalizeFully () metode yang tidak persis apa yang ingin kita capai:

public static String convertToTileCaseWordUtilsFull(String text) { return WordUtils.capitalizeFully(text); }

Seperti yang bisa kita lihat, ini sangat mudah digunakan dan jika kita mengujinya dengan input yang sama seperti sebelumnya kita mendapatkan hasil yang sama:

This Is A Title This, Is A Title

Juga, WordUtils kelas menyediakan lain memanfaatkan () metode yang bekerja mirip dengan capitalizeFully (), kecuali itu hanya mengubah karakter pertama dari setiap kata . Ini berarti itu tidak mengubah sisa karakter menjadi huruf kecil.

Mari kita lihat bagaimana kita bisa menggunakan ini:

public static String convertToTileCaseWordUtils(String text) { return WordUtils.capitalize(text); }

Sekarang, jika kita mengujinya dengan masukan yang sama seperti sebelumnya, kita mendapatkan keluaran yang berbeda ini:

THis IS A TiTLe THis, IS A TiTLe

4. Menggunakan ICU4J

Library lain yang dapat kita gunakan adalah ICU4J, yang menyediakan dukungan Unicode dan globalisasi.

Untuk menggunakannya kita perlu menambahkan ketergantungan ini ke proyek kita:

 com.ibm.icu icu4j 61.1 

Versi terbaru dapat ditemukan di sini.

Pustaka ini bekerja dengan cara yang sangat mirip seperti WordUtils , tetapi kita dapat menentukan BreakIterator untuk memberi tahu metode bagaimana kita ingin membagi String , dan oleh karena itu kata apa yang ingin kita ubah menjadi kapitalisasi judul:

public static String convertToTitleCaseIcu4j(String text) { if (text == null || text.isEmpty()) { return text; } return UCharacter.toTitleCase(text, BreakIterator.getTitleInstance()); }

Seperti yang bisa kita lihat, mereka memiliki BreakIterator khusus untuk digunakan dengan judul. Jika kita tidak menentukan BreakIterator apa pun, ia menggunakan default dari Unicode , yang dalam hal ini menghasilkan hasil yang sama.

Juga, perhatikan bahwa metode ini memungkinkan kita menentukan Lokal dari String kita mengkonversi untuk melakukan konversi lokal-spesifik.

5. Kesimpulan

Dalam artikel singkat ini, kami telah menunjukkan cara mengonversi String ke format kasus judul di Java. Kami telah menggunakan implementasi khusus kami terlebih dahulu, dan setelah itu, kami telah menunjukkan cara melakukannya menggunakan pustaka eksternal.

Seperti biasa, kode sumber lengkap dari contoh tersedia di GitHub.