Hapus tiga karakter terakhir dari string

122

Saya ingin menghapus tiga karakter terakhir dari sebuah string:

string myString = "abcdxxx"; 

Perhatikan bahwa string adalah data dinamis.

pengguna1765862
sumber
1
Baca 3 karakter terakhir = satu hal, hapus 3 karakter terakhir = lainnya. Yang?
Kieren Johnstone

Jawaban:

234

baca 3 karakter terakhir dari string [Pertanyaan yang awalnya diajukan]

Anda dapat menggunakan string.Substring dan memberikannya indeks awal dan itu akan mendapatkan substring mulai dari indeks yang diberikan hingga akhir.

myString.Substring(myString.Length-3)

Mengambil substring dari instance ini. Substring dimulai pada posisi karakter yang ditentukan. MSDN

Edit , untuk postingan terbaru

Hapus 3 karakter terakhir dari string [Pertanyaan yang diperbarui]

Untuk menghapus tiga karakter terakhir dari string Anda dapat menggunakan string.Substring (Int32, Int32) dan memberikan indeks awal 0dan indeks akhir tiga kurang dari panjang string . Ini akan mendapatkan substring sebelum tiga karakter terakhir.

myString = myString.Substring(0, myString.Length-3);

Metode String.Substring (Int32, Int32)

Mengambil substring dari instance ini. Substring dimulai pada posisi karakter tertentu dan memiliki panjang tertentu.

Anda juga dapat menggunakan metode String.Remove (Int32) untuk menghapus tiga karakter terakhir dengan meneruskan indeks awal sebagai panjang - 3 , ini akan menghapus dari titik ini ke akhir string.

myString = myString.Remove(myString.Length-3)

Metode String.Remove (Int32)

Mengembalikan string baru di mana semua karakter dalam contoh saat ini, dimulai dari posisi tertentu dan berlanjut hingga posisi terakhir, telah dihapus

Adil
sumber
13
ini bukan jawabannya
mengerem
21
Thanks @braks, pertanyaan yang awalnya diajukan adalah "baca 3 karakter terakhir dari string" Ini kemudian diedit dan saya tidak tahu, lihat riwayat edit pertanyaan. Komentar Anda membantu saya mengoreksi jawaban saya yang menjadi salah setelah mengedit pertanyaan.
Adil
26
myString = myString.Remove(myString.Length - 3, 3);
Alex
sumber
13

Saya membaca semua ini, tetapi menginginkan sesuatu yang sedikit lebih elegan. Hanya untuk menghapus sejumlah karakter dari akhir string:

string.Concat("hello".Reverse().Skip(3).Reverse());

keluaran:

"he"
Byron Katz
sumber
7
Yang ini cukup "kreatif", karena tidak membutuhkan panjang senar, tetapi operasi sebaliknya mungkin lebih mahal.
Aleksandar
4
Membalikkan string jelas lebih mahal daripada menghitung karakternya. String yang benar-benar baru perlu dibuat, lalu string asli disalin ke dalamnya, lalu string asli perlu dikumpulkan sampahnya.
Matt Gregory
String @MattGregory tidak dapat diubah: Hapus, Substring, fungsi string apa pun menghasilkan string baru. Menimpa penunjuk asli selalu menyebabkan pengumpulan sampah. Ini masih lebih lambat, karena Enumerable.Reversemenyangga string menjadi a char[], lalu menyangga menjadi yang baru char[]3 lebih pendek, dan kemudian menghasilkan yang baru string(dengan yang lain secara internal char[]). Pendekatan yang lebih baik adalah new string("hello".Reverse().Skip(3)), atau hanya menulis fungsi ekstensi string Anda sendiri AllBut(this string in, int i)yang menggunakan Substring.
Wolfzoon
@MattGregory Bahkan tidak "menghitung" karakter string, string telah Lengthdisimpan.
Wolfzoon
1
Sekarang kami juga punya .SkipLast(n). Tidak perlu membalikkan apa pun. "hello".SkipLast(3)memberikan"he"
AjitZero
9
myString.Remove(myString.Length-3);
Adeel
sumber
3
myString = myString.Remove(myString.Length - 3)itu adalah.
A-Sharabiani
6
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Jaidi Wael Leila
sumber
5

Anda dapat menggunakan String.Removeuntuk menghapus dari posisi tertentu hingga akhir string.

myString = myString.Remove(myString.Length - 3);
lc.
sumber
4

Mungkin tidak persis seperti yang Anda cari karena Anda mengatakan itu "data dinamis" tetapi mengingat string contoh Anda, ini juga berfungsi:

? "abcdxxx".TrimEnd('x');
"abc"
Mike Lowery
sumber
3

str= str.Remove(str.Length - 3);

scofield
sumber
2
   string myString = "abcdxxx";
   if (myString.Length<3)
      return;
   string newString=myString.Remove(myString.Length - 3, 3);
Frank59
sumber
1

Hapus karakter terakhir dari string

TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)

.Text.Remove(10)// digunakan untuk menghapus teks mulai dari indeks 10 hingga akhir

subramanya46
sumber
1

Operator jangkauan C # 8.0 baru bisa menjadi jalan pintas yang bagus untuk mencapai ini.

Contoh:

var shortenedString = myString[0..^1]
vullnetyy
sumber
0
items.Remove(items.Length - 3)

string.Remove()menghapus semua item dari indeks itu sampai akhir. items.length - 3mendapatkan indeks 3 karakter dari akhir

Ben Rauzi
sumber
0

Mudah. text = text.remove(text.length - 3). Saya mengurangi 3 karena Removefungsinya menghapus semua item dari indeks itu ke akhir string yang text.length. Jadi jika saya mengurangi 3 maka saya mendapatkan string dengan 3 karakter dihapus darinya.

Anda dapat menggeneralisasi ini untuk menghapus akarakter dari akhir string, seperti ini:

text = text.remove(text.length - a) 

Jadi apa yang saya lakukan adalah logika yang sama. The removeFungsi menghapus semua item dari dalam untuk akhir dari string yang panjang teks. Jadi jika saya mengurangi adari panjang string yang akan memberi saya string dengan akarakter yang dihapus.

Jadi ini tidak hanya bekerja untuk 3, itu bekerja untuk semua bilangan bulat positif, kecuali jika panjang string kurang dari atau sama dengan a, dalam hal ini akan mengembalikan angka negatif atau 0.

zixuan
sumber