Saya ingin menghapus karakter terakhir dari string. I've mencoba melakukan hal ini:
public String method(String str) {
if (str.charAt(str.length()-1)=='x'){
str = str.replace(str.substring(str.length()-1), "");
return str;
} else{
return str;
}
}
Mendapatkan panjang string - 1 dan mengganti huruf terakhir dengan tidak ada (dihapus), tetapi setiap kali saya menjalankan program, menghapus tengah huruf yang sama dengan huruf terakhir.
Misalnya, kata "pengagum"; setelah saya menjalankan metode ini, saya mendapatkan "admie." saya ingin kembali kata mengagumi.
mengganti
akan menggantikan semua contoh surat. Semua yang perlu anda lakukan adalah menggunakan substring()
:
public String method(String str) {
if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == 'x') {
str = str.substring(0, str.length() - 1);
}
return str;
}
Mengapa tidak hanya satu kapal?
private static String removeLastChar(String str) {
return str.substring(0, str.length() - 1);
}
Penuh Kode
import java.util.*;
import java.lang.*;
public class Main {
public static void main (String[] args) throws java.lang.Exception {
String s1 = "Remove Last CharacterY";
String s2 = "Remove Last Character2";
System.out.println("After removing s1==" + removeLastChar(s1) + "==");
System.out.println("After removing s2==" + removeLastChar(s2) + "==");
}
private static String removeLastChar(String str) {
return str.substring(0, str.length() - 1);
}
}
Dijelaskan masalah dan mengusulkan solusi yang kadang-kadang berhubungan dengan menghapus pemisah. Jika ini adalah kasus anda, kemudian lihat pada Apache Commons StringUtils, ia memiliki sebuah metode yang disebut removeEnd yang sangat elegan.
Contoh:
StringUtils.removeEnd("string 1|string 2|string 3|", "|");
Akan menghasilkan: "string 1 dan string 2|string 3"
Don't mencoba untuk menemukan kembali roda, sementara yang lain telah menulis perpustakaan untuk melakukan manipulasi string:
org.apache.commons.lang3.StringUtils.chop()
if (str.endsWith("x")) {
return str.substring(0, str.length() - 1);
}
return str;
Untuk contoh, kata "pengagum"; setelah saya menjalankan metode ini, saya mendapatkan "admie." saya ingin kembali kata mengagumi.
Dalam kasus anda're berusaha untuk batang kata-kata bahasa inggris
Stemming adalah proses untuk mengurangi infleksi (atau kadang-kadang berasal) kata-kata untuk induk mereka, dasar atau bentuk akar—umumnya tertulis bentuk kata.
...
stemmer untuk bahasa inggris, misalnya, harus mengidentifikasi string "kucing" (dan mungkin "kucing", "kati" dll.) karena berdasarkan akar "kucing", dan "stemmer", "berasal", "bertangkai" karena berdasarkan "batang". Yang berasal algoritma mengurangi kata-kata "memancing", "memancing", "ikan", dan "fisher" akar kata, "ikan".
https://stackoverflow.com/questions/5068790/difference-between-lucene-stemmers-englishstemmer-porterstemmer-lovinsstemmer menguraikan beberapa Java pilihan.
Sejauh pembacaan yang bersangkutan, saya menemukan ini untuk menjadi yang paling ringkas
StringUtils.substring("string", 0, -1);
Negatif indeks dapat digunakan di Apache's StringUtils utilitas. Semua angka negatif diperlakukan dari offset dari akhir string.
Di Kotlin anda dapat digunakan dropLast() method dari class string. Itu akan menjatuhkan sejumlah tertentu dari string, mengembalikan string baru
var string1 = "Some Text"
string1 = string1.dropLast(1)
menghilangkan kejadian terakhir dari 'xxx':
System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));
menghilangkan terakhir terjadinya 'xxx' jika itu adalah terakhir:
System.out.println("aaa xxx aaa ".replaceAll("xxx\\s*$", ""));
anda dapat mengganti 'xxx' pada apa yang anda inginkan tapi hati-hati pada karakter khusus
Mengapa tidak menggunakan urutan escape ... !
System.out.println(str + '\b');
Hidup ini jauh lebih mudah sekarang . XD ! ~ Dapat dibaca satu-liner
// Remove n last characters
// System.out.println(removeLast("Hello!!!333",3));
public String removeLast(String mes, int n) {
return mes != null && !mes.isEmpty() && mes.length()>n
? mes.substring(0, mes.length()-n): mes;
}
// Leave substring before character/string
// System.out.println(leaveBeforeChar("Hello!!!123", "1"));
public String leaveBeforeChar(String mes, String last) {
return mes != null && !mes.isEmpty() && mes.lastIndexOf(last)!=-1
? mes.substring(0, mes.lastIndexOf(last)): mes;
}
"String name" = "String name".substring(0, ("String name".length() - 1));
I'm menggunakan ini dalam kode saya, it's mudah dan sederhana. ini hanya bekerja sementara String > 0. Saya telah terhubung ke tombol dan dalam berikut jika pernyataan
if ("String name".length() > 0) {
"String name" = "String name".substring(0, ("String name".length() - 1));
}
Jawa 8
import java.util.Optional;
public class Test
{
public static void main(String[] args) throws InterruptedException
{
System.out.println(removeLastChar("test-abc"));
}
public static String removeLastChar(String s) {
return Optional.ofNullable(s)
.filter(str -> str.length() != 0)
.map(str -> str.substring(0, str.length() - 1))
.orElse(s);
}
}
Output : uji-ab
Paling jawabannya di sini lupa tentang pengganti pasangan.
Misalnya, karakter 𝕫 (codepoint U+1D56B) tidak masuk ke dalam single char
, sehingga dalam rangka untuk dapat diwakilkan, harus membentuk pengganti pasangan dua karakter.
Jika satu hanya berlaku saat ini jawaban yang diterima (menggunakan str.substring(0, str.length() - 1)
, salah satu splices pengganti pasangan, yang mengarah ke hasil yang tak terduga.
Satu juga harus memeriksa apakah karakter terakhir adalah pengganti pasangan:
public static String removeLastChar(String str) {
Objects.requireNonNull(str, "The string should not be null");
if (str.isEmpty()) {
return str;
}
char lastChar = str.charAt(str.length() - 1);
int cut = Character.isSurrogate(lastChar) ? 2 : 1;
return str.substring(0, str.length() - cut);
}