Di Jawa, saya punya String:
Jamaica
Saya ingin menghapus karakter pertama dari string dan kemudian kembali amaica
Bagaimana saya melakukan ini?
Di Jawa, saya punya String:
Jamaica
Saya ingin menghapus karakter pertama dari string dan kemudian kembali amaica
Bagaimana saya melakukan ini?
Jawaban:
Gunakan substring()
fungsi dengan argumen 1
untuk mendapatkan substring dari posisi 1 ( setelah karakter pertama) ke akhir string (membiarkan argumen kedua keluar default ke panjang penuh dari string).
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
Gunakan substring()
dan berikan jumlah karakter yang ingin Anda pangkas dari depan.
String value = "Jamaica";
value = value.substring(1);
Jawab: "amaica"
Gunakan operator ternary Java untuk memeriksa dengan cepat apakah karakter Anda ada di sana sebelum menghapusnya. Ini menghapus karakter utama hanya jika ada, jika melewati string kosong, kembali blankstring.
String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);
Cetakan:
blankstring
foobar
moobar
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
public String removeFirst(String input)
{
return input.substring(1);
}
Hal utama yang perlu dipahami di Jawa adalah bahwa String tidak dapat diubah - Anda tidak dapat mengubahnya. Jadi tidak masuk akal untuk berbicara tentang 'menghapus karakter dari string'. Sebagai gantinya, Anda membuat string BARU hanya dengan karakter yang Anda inginkan. Posting lain dalam pertanyaan ini memberi Anda berbagai cara untuk melakukan itu, tetapi penting untuk memahami bahwa ini tidak mengubah string asli dengan cara apa pun. Referensi apa pun yang Anda miliki ke string lama akan terus merujuk ke string lama (kecuali jika Anda mengubahnya untuk merujuk ke string lain) dan tidak akan terpengaruh oleh string yang baru dibuat.
Ini memiliki sejumlah implikasi untuk kinerja. Setiap kali Anda 'memodifikasi' string, Anda benar-benar membuat string baru dengan semua overhead tersirat (alokasi memori dan pengumpulan sampah). Jadi jika Anda ingin membuat serangkaian modifikasi pada string dan hanya peduli tentang hasil akhir (string menengah akan mati segera setelah Anda 'memodifikasi' mereka), mungkin lebih masuk akal untuk menggunakan StringBuilder atau StringBuffer sebagai gantinya.
substring () metode kembali sebuah String baru yang berisi subsequence karakter saat ini terdapat dalam urutan ini.
The substring dimulai pada tertentu start
dan meluas ke karakter di index end - 1
.
Ini memiliki dua bentuk. Yang pertama adalah
String substring(int FirstIndex)
Di sini, FirstIndex menentukan indeks di mana substring akan dimulai. Formulir ini mengembalikan salinan substring yang dimulai di FirstIndex dan berjalan ke akhir string yang memanggil.
String substring(int FirstIndex, int endIndex)
Di sini, FirstIndex menentukan indeks awal, dan endIndex menentukan titik berhenti. String yang dikembalikan berisi semua karakter dari indeks awal, hingga, tetapi tidak termasuk, indeks akhir.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
Saya menemukan situasi di mana saya harus menghapus tidak hanya karakter pertama (jika itu adalah #
, tetapi set karakter pertama).
String myString = ###Hello World
bisa menjadi titik awal, tetapi saya hanya ingin menyimpannya Hello World
. ini bisa dilakukan sebagai berikut.
while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
myString = myString.substring(1, myString.length());
}
Untuk kasus OP, ganti while
dengan if
dan berfungsi juga.
Solusi lain, Anda dapat memecahkan masalah Anda menggunakan replaceAll
dengan beberapa regex ^.{1}
( demo regex ) misalnya:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
Versi saya menghapus karakter utama, satu atau beberapa. Sebagai contoh, String str1 = "01234", ketika menghapus memimpin '0', hasilnya akan menjadi "1234". Untuk String str2 = "000123" hasilnya akan menjadi lagi "123". Dan untuk String str3 = "000" hasilnya adalah string kosong: "". Fungsionalitas seperti itu sering berguna ketika mengubah string numerik menjadi angka. Keuntungan dari solusi ini dibandingkan dengan regex (replaceAll (...)) adalah bahwa ini jauh lebih cepat. Ini penting saat memproses sejumlah besar String.
public static String removeLeadingChar(String str, char ch) {
int idx = 0;
while ((idx < str.length()) && (str.charAt(idx) == ch))
idx++;
return str.substring(idx);
}