Rumus ini menggunakan fungsi MID untuk menghapus kata terakhir dari string teks. Tantangan utamanya adalah mencari tahu di mana kata terakhir dimulai
Rumusnya agak berbelit-belit, tetapi langkah-langkahnya sederhana. Kami pertama-tama menghitung berapa banyak spasi yang ada dalam teks menggunakan LEN dan SUBSTITUTE. Selanjutnya, kita menggunakan argumen instance yang agak tidak jelas dalam fungsi SUBSTITUTE untuk mengganti spasi terakhir dengan tilde (~). Terakhir, kami menggunakan FIND untuk mencari tahu di mana tilde berada, dan fungsi MID untuk membuang semuanya setelah tilde
Bekerja dari dalam ke luar, kami menggunakan fungsi LEN dan SUBSTITUTE untuk menghitung berapa banyak ruang yang muncul di depan
LEN(B5)-LEN(SUBSTITUTE(B5," ","")) // returns 6Untuk teks di B5, ini mengembalikan 6. Halaman ini menjelaskan bagian rumus ini secara lebih rinci. Ini memberitahu kita bahwa kita ingin memotong teks pada karakter spasi ke-6
Catatan. jika kata-kata dipisahkan oleh lebih dari satu spasi, Anda akan ingin menormalkan spasi terlebih dahulu dengan fungsi TRIM
Angka 6 kemudian dicolokkan ke PENGGANTI lain sebagai "nomor instans"
SUBSTITUTE(B5," ","~",6) // insert tilde _Di sini, kami mengganti instance ke-6 dari spasi (" ") dengan tanda gelombang (~). Setelah SUBSTITUTE berjalan, ia mengembalikan string ini
"It's been seven hours and fifteen~days"Catatan. kami menggunakan tilde (~) hanya karena itu adalah karakter yang jarang muncul. Anda dapat menggunakan karakter apa pun yang Anda suka, asalkan tidak muncul di teks sumber
Selanjutnya, kami menggunakan fungsi FIND untuk menemukan tilde
FIND mengembalikan 34, karena tilde adalah karakter ke-34. Kami mengurangi 1 dari angka ini, karena kami tidak ingin menyertakan spasi terakhir di hasil akhir. Kita sekarang dapat menyederhanakan rumus menjadi
=MID(B5,1,33) // extract final text _Fungsi MID kemudian mengembalikan karakter 1-33
"It's been seven hours and fifteen"Dengan pembatas khusus
Rumus yang sama dapat digunakan dengan pembatas yang berbeda. Misalnya, untuk menghapus semua teks setelah garis miring terakhir "/", Anda dapat menggunakan
Dalam tutorial singkat ini, kita akan menjelajahi berbagai teknik untuk menghapus karakter terakhir dari sebuah String
2. Menggunakan Tali. substring()
Cara termudah adalah dengan menggunakan metode substring() bawaan dari kelas String
Untuk menghapus karakter terakhir dari sebuah String, kita harus menggunakan dua parameter. 0 sebagai indeks awal, dan indeks karakter kedua dari belakang. Kita dapat mencapainya dengan memanggil metode String's length() , dan mengurangkan 1 dari hasilnya
Namun, metode ini tidak null-safe, dan jika kita menggunakan string kosong, ini akan gagal
Untuk mengatasi masalah dengan string null dan kosong, kita bisa membungkus metode di kelas helper
public static String removeLastChar(String s) { return (s == null || s.length() == 0) ? null : (s.substring(0, s.length() - 1)); }_Kami dapat memperbaiki 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 menemukan kembali roda, kita dapat menggunakan kelas StringUtils dari pustaka Apache Commons Lang3, yang menawarkan operasi String yang berguna. Salah satunya adalah metode null-safe substring(), yang menangani pengecualian
Untuk memasukkan StringUtils, kita harus mengupdate pom kita. file xml
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>_StringUtils. substring() membutuhkan tiga parameter. String yang diberikan, indeks karakter pertama (dalam kasus kami akan selalu 0), dan indeks karakter kedua dari belakang. Sekali lagi, kita cukup menggunakan metode length() dan kurangi 1
String TEST_STRING = "abcdef"; StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);_Sekali lagi, operasi ini tidak null-safe. Ini akan berfungsi dengan baik dengan Strings kosong
4. Menggunakan StringUtils. mencacah()
Kelas StringUtils menyediakan metode chop() , yang berfungsi baik dengan semua skenario edge. String kosong dan nol
Ini sangat mudah digunakan, dan hanya membutuhkan satu parameter. String. Tujuan utamanya adalah 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 sebuah String dengan memanfaatkan ekspresi reguler dengan baik
Sebagai contoh, kita dapat menggunakan metode replaceAll() dari kelas String itu sendiri, yang membutuhkan dua parameter. ekspresi reguler dan String pengganti
TEST_STRING.replaceAll(".$", "");Perhatikan bahwa, karena kita memanggil metode pada String, operasi tersebut tidak null-safe
Selain itu, ekspresi replaceAll() dan regex bisa menjadi rumit pada pandangan pertama. Kita dapat membaca lebih lanjut tentang regex di sini, tetapi untuk membuat logikanya sedikit lebih mudah digunakan, kita dapat membungkusnya dalam kelas pembantu
public static String removeLastCharRegex(String s) { return (s == null) ? null : s.replaceAll(".$", ""); }Perhatikan bahwa jika sebuah String diakhiri dengan baris baru, maka metode di atas akan gagal sebagai “. ” dalam regex cocok untuk karakter apa pun kecuali untuk terminator baris
Terakhir, mari kita 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, kami membahas berbagai cara untuk menghapus hanya karakter terakhir dari sebuah String, beberapa manual dan beberapa sudah siap pakai
Jika kami membutuhkan lebih banyak fleksibilitas, dan kami perlu menghapus lebih banyak karakter, kami dapat menggunakan solusi yang lebih canggih dengan ekspresi reguler