Bagaimana Mengeluarkan Karakter Terakhir dari Rentetan?

1. Gambaran keseluruhan

Dalam artikel ringkas ini, kami akan memeriksa dan membincangkan teknik yang berbeza untuk menghilangkan watak terakhir String.

2. Menggunakan String.substring ()

Cara yang paling mudah adalah dengan menggunakan terbina dalam subrentetan () kaedah daripada String kelas.

Untuk membuang watak terakhir dari String tertentu , kita harus menggunakan dua parameter: 0 sebagai indeks permulaan, dan indeks watak kedua. Kami boleh mencapainya dengan memanggil String 's panjang () kaedah dan menolak 1 dari hasilnya.

Walau bagaimanapun, kaedah ini tidak selamat dan jika kita menggunakan tali kosong ini akan gagal.

Untuk mengatasi masalah dengan tali kosong dan kosong, kita dapat menyelesaikan kaedah ini di kelas penolong:

public static String removeLastChar(String s) 

Kita boleh mengubah kod 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 ()

Daripada mencipta semula roda, kita dapat menggunakan kelas StringUtils dari perpustakaan Apache Commons Lang3 , yang menawarkan operasi String yang bermanfaat . Salah satunya adalah kaedah substring () yang tidak selamat , yang menangani pengecualian.

Untuk memasukkan StringUtils kita harus mengemas kini fail pom.xml kita :

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () memerlukan tiga parameter: String yang diberikan , indeks watak pertama (dalam kes kita akan 0 selalu) dan indeks watak kedua. Sekali lagi, kita hanya boleh menggunakan kaedah panjang () dan tolak 1:

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

Namun, operasi ini tidak selamat lagi. Ia akan berfungsi dengan tali kosong walaupun.

4. Menggunakan StringUtils.chop ()

Kelas StringUtils menyediakan kaedah chop () yang berfungsi dengan baik dengan semua senario tepi: String kosong dan kosong .

Sangat mudah digunakan dan hanya memerlukan satu parameter: String. Tujuan utamanya adalah untuk membuang watak terakhir. Tidak lebih, tidak kurang:

StringUtils.chop(TEST_STRING);

5. Menggunakan Ungkapan Biasa

Kita juga boleh membuang watak terakhir (atau sebilangan watak) dari String dengan menggunakan ungkapan biasa.

Sebagai contoh, kita boleh menggunakan replaceAll () kaedah String kelas sendiri - yang mengambil masa dua parameter: ungkapan biasa dan penggantian String :

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

Perhatikan bahawa, kerana kita memanggil kaedah di String - operasi tentu saja tidak selamat .

Juga, ekspresi ReplAll () dan regex boleh menjadi kompleks pada pandangan pertama. Anda boleh membaca lebih lanjut mengenai regex di sini, tetapi untuk menjadikan logiknya lebih mesra pengguna, kami dapat membungkusnya dalam kelas penolong:

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

Perhatikan bahawa jika String diakhiri dengan baris baru maka kaedah di atas akan gagal sebagai "." dalam regex sepadan dengan watak apa pun kecuali penamat baris.

Akhirnya, mari tulis semula pelaksanaannya dengan Java 8 :

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

6. Kesimpulannya

Dalam artikel pendek ini, kami telah membincangkan cara-cara yang berbeza untuk membuang hanya watak terakhir String - beberapa manual, beberapa siap di luar kotak.

Dan, jika kita memerlukan lebih banyak fleksibiliti dan kita perlu membuang lebih banyak watak, kita dapat penyelesaian yang lebih maju dengan ungkapan biasa.

Seperti biasa, kod yang digunakan di seluruh artikel boleh didapati di GitHub.