Bagaimana cara menghapus karakter terakhir dari sebuah string?

1. Ikhtisar

Dalam artikel singkat ini, kita akan memeriksa dan membahas berbagai teknik untuk menghapus karakter terakhir dari sebuah String.

2. Menggunakan String.substring ()

Cara termudah adalah dengan menggunakan built-in substring () metode dari String kelas.

Untuk menghapus karakter terakhir dari String tertentu , kita harus menggunakan dua parameter: 0 sebagai indeks awal, dan indeks karakter kedua dari belakang. Kita bisa mencapai itu dengan menelepon String 's length () metode dan mengurangkan 1 dari hasilnya.

Namun, metode ini tidak aman untuk null dan jika kita menggunakan string kosong, ini akan gagal.

Untuk mengatasi masalah dengan null dan string kosong, kita dapat menggabungkan metode ini dalam kelas helper:

public static String removeLastChar(String s) 

Kita dapat memfaktor ulang kode dan menggunakan Java 8:

public static String removeLastCharOptional(String s) { return Optional.ofNullable(s) .filter(str -> str.length() != 0) .map(str -> str.substring(0, str.length() - 1)) .orElse(s); }

3. Menggunakan StringUtils.substring ()

Alih-alih menciptakan kembali roda, kita dapat menggunakan kelas StringUtils dari pustaka Apache Commons Lang3 , yang menawarkan operasi String yang membantu . Salah satunya adalah metode substring () yang aman null , yang menangani pengecualian.

Untuk menyertakan StringUtils kita harus memperbarui file pom.xml kita :

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () membutuhkan tiga parameter: String yang diberikan , indeks karakter pertama (dalam kasus kami akan selalu 0) dan indeks dari karakter kedua dari belakang. Sekali lagi, kita cukup menggunakan metode length () dan mengurangi 1:

String TEST_STRING = "abcdef"; StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);

Namun, operasi ini tidak lagi aman untuk null. Ini akan bekerja dengan String kosong .

4. Menggunakan StringUtils.chop ()

Kelas StringUtils menyediakan metode chop () yang bekerja dengan baik dengan semua skenario edge: String kosong dan null .

Ini sangat mudah digunakan dan hanya membutuhkan satu parameter: String. Tujuan utamanya adalah untuk menghapus karakter terakhir. Tidak lebih, tidak kurang:

StringUtils.chop(TEST_STRING);

5. Menggunakan Ekspresi Reguler

Kami juga dapat menghapus karakter terakhir (atau sejumlah karakter) dari String dengan memanfaatkan ekspresi reguler.

Misalnya, kita bisa menggunakan metode replaceAll () dari kelas String itu sendiri - yang mengambil dua parameter: ekspresi reguler dan string pengganti :

TEST_STRING.replaceAll(".$", "");

Perhatikan bahwa, karena kita memanggil metode pada String - operasinya, tentu saja, tidak aman-null .

Selain itu, ekspresi replaceAll () dan regex bisa menjadi kompleks pada pandangan pertama. Anda dapat membaca lebih lanjut tentang regex di sini, tetapi untuk membuat logikanya sedikit lebih ramah pengguna, kita dapat menggabungkannya dalam kelas helper:

public static String removeLastCharRegex(String s) { return (s == null) ? null : s.replaceAll(".$", ""); }

Perhatikan bahwa jika String diakhiri dengan baris baru maka metode di atas akan gagal sebagai "." dalam ekspresi reguler mencocokkan karakter apa pun kecuali untuk terminator baris.

Terakhir, mari tulis ulang implementasinya dengan Java 8 :

public static String removeLastCharRegexOptional(String s) { return Optional.ofNullable(s) .map(str -> str.replaceAll(".$", "")) .orElse(s); }

6. Kesimpulan

Dalam artikel singkat ini, kita telah membahas berbagai cara untuk menghapus hanya karakter terakhir dari sebuah String - beberapa manual, beberapa sudah siap.

Dan, jika kita membutuhkan lebih banyak fleksibilitas dan kita perlu menghapus lebih banyak karakter, kita bisa mendapatkan solusi yang lebih maju dengan ekspresi reguler.

Seperti biasa, kode yang digunakan di seluruh artikel dapat ditemukan di GitHub.