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.
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.
Mengembalikan string baru di mana semua karakter dalam contoh saat ini, dimulai dari posisi tertentu dan berlanjut hingga posisi terakhir, telah dihapus
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.
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"
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.
Jawaban:
Anda dapat menggunakan string.Substring dan memberikannya indeks awal dan itu akan mendapatkan substring mulai dari indeks yang diberikan hingga akhir.
Edit , untuk postingan terbaru
Untuk menghapus tiga karakter terakhir dari string Anda dapat menggunakan string.Substring (Int32, Int32) dan memberikan indeks awal
0
dan indeks akhir tiga kurang dari panjang string . Ini akan mendapatkan substring sebelum tiga karakter terakhir.Metode String.Substring (Int32, Int32)
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.
Metode String.Remove (Int32)
sumber
sumber
Saya membaca semua ini, tetapi menginginkan sesuatu yang sedikit lebih elegan. Hanya untuk menghapus sejumlah karakter dari akhir string:
keluaran:
sumber
Enumerable.Reverse
menyangga string menjadi achar[]
, lalu menyangga menjadi yang baruchar[]
3 lebih pendek, dan kemudian menghasilkan yang barustring
(dengan yang lain secara internalchar[]
). Pendekatan yang lebih baik adalahnew string("hello".Reverse().Skip(3))
, atau hanya menulis fungsi ekstensi string Anda sendiriAllBut(this string in, int i)
yang menggunakan Substring.Length
disimpan..SkipLast(n)
. Tidak perlu membalikkan apa pun."hello".SkipLast(3)
memberikan"he"
sumber
myString = myString.Remove(myString.Length - 3)
itu adalah.sumber
Anda dapat menggunakan
String.Remove
untuk menghapus dari posisi tertentu hingga akhir string.sumber
Mungkin tidak persis seperti yang Anda cari karena Anda mengatakan itu "data dinamis" tetapi mengingat string contoh Anda, ini juga berfungsi:
sumber
str= str.Remove(str.Length - 3);
sumber
Berikut adalah contoh tentang substring. >>
http://www.dotnetperls.com/substring
Referensikan itu.
sumber
sumber
Hapus karakter terakhir dari string
.Text.Remove(10)
// digunakan untuk menghapus teks mulai dari indeks 10 hingga akhirsumber
Operator jangkauan C # 8.0 baru bisa menjadi jalan pintas yang bagus untuk mencapai ini.
Contoh:
sumber
string.Remove()
menghapus semua item dari indeks itu sampai akhir.items.length - 3
mendapatkan indeks 3 karakter dari akhirsumber
Mudah.
text = text.remove(text.length - 3)
. Saya mengurangi 3 karenaRemove
fungsinya menghapus semua item dari indeks itu ke akhir string yangtext.length
. Jadi jika saya mengurangi 3 maka saya mendapatkan string dengan 3 karakter dihapus darinya.Anda dapat menggeneralisasi ini untuk menghapus
a
karakter dari akhir string, seperti ini:Jadi apa yang saya lakukan adalah logika yang sama. The
remove
Fungsi menghapus semua item dari dalam untuk akhir dari string yang panjang teks. Jadi jika saya mengurangia
dari panjang string yang akan memberi saya string dengana
karakter 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.sumber