Bagaimana saya bisa menghapus karakter dari sebuah string menggunakan Javascript?
Aku begitu dekat untuk mendapatkan ini, tapi itu hanya isn't kanan.
Semua saya ingin lakukan adalah menghapus karakter r
dari sebuah string.
Masalahnya adalah, ada lebih dari satu contoh dari r
dalam string.
Namun, itu selalu karakter pada indeks 4 (sehingga 5 karakter).
contoh string: crt/r2002_2
Apa yang saya inginkan: crt/2002_2
Ini menggantikan fungsi menghilangkan kedua r
mystring.replace(/r/g, '')
Menghasilkan: ct/2002_2
Saya mencoba fungsi ini:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Ini hanya bekerja jika saya menggantinya dengan yang lain karakter. Itu tidak akan cukup keluarkan.
Setiap pikiran?
309
17
akan menggantikan
/r
dengan/
menggunakanString.prototype.replace
.Sebagai alternatif, anda bisa menggunakan regex dengan bendera global (seperti yang disarankan oleh Erik Reppen & Sagar Gala, di bawah) untuk mengganti semua kejadian dengan
EDIT: Karena setiap orang's memiliki begitu banyak bersenang-senang di sini dan user1293504 doesn't tampaknya akan datang kembali dalam waktu dekat untuk menjawab pertanyaan klarifikasi, di sini's metode untuk menghapus N karakter dari string:
Sejak user1293504 digunakan hitungan normal bukan-nol menghitung, we've harus menghapus 1 dari indeks, jika anda ingin menggunakan ini untuk meniru cara
charAt
bekerja jangan kurangi 1 dari indeks pada 3 baris dan menggunakantmp.sambatan(i, 1)
sebagai gantinya.Sederhana dan fungsional javascript cara
mystring = mystring.split('/r').bergabung('/')
sederhana, cepat, mengganti secara global dan tidak perlu untuk fungsi-fungsi atau prototipe
Ada's selalu fungsi string, jika anda tahu anda're selalu akan menghapus karakter keempat:
Pertama anda func hampir tepat. Hanya menghapus 'g' bendera yang merupakan singkatan dari 'global' (edit) dan memberikan beberapa konteks untuk tempat kedua 'r'.
Edit: didn't melihat itu kedua 'r' sebelum jadi tambah '/'. Kebutuhan \/ untuk melarikan diri '/' bila menggunakan regEx arg. Terima kasih untuk upvotes tapi aku salah jadi saya'll memperbaiki dan menambahkan lebih detail untuk orang yang tertarik dalam memahami dasar-dasar regEx lebih baik tapi ini akan bekerja:
Sekarang bagi anda yang berlebihan penjelasan:
Ketika membaca/menulis regEx pola pikir dalam hal: <a karakter atau set patung pun> diikuti oleh <a karakter atau set patung pun> diikuti oleh <...
Di regEx <a karakter atau set patung pun> bisa satu per satu:
Sehingga dibaca sebagai e, diikuti oleh, yang diikuti oleh c, dll...
Atau satu <a karakter atau set patung pun> bisa menjadi karakter yang digambarkan oleh kelas karakter:
Atau diperluas untuk mencocokkan jumlah karakter (tapi masih berpikir sebagai elemen tunggal dalam hal pola berurutan):
Jadi smoosh sekelompok bersama-sama:
Dan tentu saja aku've atas diuraikan tapi poin saya adalah bahwa ini:
merupakan rangkaian dari 3 pola unsur-unsur (hal diikuti oleh hal yang diikuti oleh hal).
Dan jadi ini:
Sebagai aneh seperti regEx mulai terlihat, itu semua rusak serangkaian hal-hal yang (berpotensi multi-karakter hal-hal) berikut satu sama lain secara berurutan. Jenis titik dasar tapi satu yang aku butuh waktu beberapa saat untuk mendapatkan masa lalu jadi saya've pergi ke laut menjelaskan hal itu di sini karena saya pikir itu's salah satu yang akan membantu OP dan lain-lain baru untuk regEx memahami apa's terjadi. Kunci untuk membaca/menulis regEx adalah memecahnya menjadi potongan-potongan.
Untuk penggantian global dari '/r', kode ini bekerja untuk saya.
Hanya memperbaiki
replaceAt
:I'd menyebutnya
removeAt
sebagai gantinya. :)char.panjang
adalah nol. Anda perlu menambahkan1
, dalam hal ini dalam rangka untuk beralih karakter.Hal ini karena ketika
char
adalah sama dengan","
,char.panjang
adalah 0, sehingga anda substring bergabung untuk membentuk string asli. Akan dengan kode anda mencoba, berikut ini akan bekerja:Membuat fungsi seperti di bawah ini
Untuk menggantikan memberikan karakter seperti di bawah ini
dan untuk menghapus karakter di pasti naik, memberikan parameter kedua sebagai string kosong
Jika hal ini selalu 4 char di yourString yang dapat anda coba:
Jika anda hanya ingin menghapus satu karakter dan Jika anda mengetahui indeks dari karakter yang ingin anda hapus, anda dapat menggunakan fungsi berikut:
Saya tidak suka menggunakan menggantikan fungsi untuk menghapus karakter dari string. Ini adalah tidak logis untuk melakukan hal seperti itu. Biasanya saya program di C# (Sharp), dan setiap kali saya ingin menghapus karakter dari string, saya menggunakan metode Hapus String kelas, tapi tidak Mengganti metode, meskipun itu ada, karena ketika saya hendak memindahkan, menghapus, tidak ada ganti. Ini adalah logis!
Dalam Javascript, tidak menghapus fungsi string, tapi ada fungsi substr. Anda dapat menggunakan fungsi substr sekali atau dua kali untuk menghapus karakter dari string. Anda dapat membuat fungsi berikut untuk menghapus karakter di awal indeks akhir string, seperti c# metode pertama overload String.Remove(int startIndex):
dan/atau anda juga dapat membuat fungsi berikut untuk menghapus karakter di awal indeks dan menghitung, seperti c# metode kedua yang berlebihan String.Remove(int startIndex, int count):
dan kemudian anda dapat menggunakan dua fungsi atau salah satu dari mereka untuk kebutuhan anda!
Contoh:
Output: crt/2002_2
Mencapai tujuan dengan melakukan teknik dengan tidak ada logika mungkin menyebabkan kebingungan dalam memahami kode etik, dan kesalahan di masa depan, jika anda melakukan ini dalam sebuah proyek besar!
Berikut fungsi bekerja terbaik untuk kasus saya:
Jalan terpendek akan menggunakan sambatan
Anda dapat menggunakan ini:
jika ( str[4] === 'r' ) str = str.slice(0, 4) + str.slice(5)
Penjelasan:
if ( str[4] === 'r' )
Periksa jika 5 karakter adalah
'r'
str.slice(0, 4)
Iris string untuk mendapatkan segala sesuatu sebelum
'r'
+ str.slice(5)
Tambahkan sisa string.
Minified:
s=s[4]=='r'?s.slice(0,4)+s.slice(5):s
[37 byte!]DEMO:
Ini adalah perbaikan dari simpleigh jawaban (hilangkan panjang)
Di C# (Sharp), anda dapat membuat sebuah karakter kosong sebagai '\0'. Mungkin anda bisa melakukan hal ini:
Pencarian di google atau berselancar di interent dan memeriksa jika javascript memungkinkan anda untuk membuat karakter kosong, seperti C# tidak. Jika ya, maka pelajari bagaimana untuk melakukannya, dan mungkin replaceAt fungsi akan bekerja pada akhirnya, dan anda'll mencapai apa yang anda inginkan!
Akhirnya yang 'r' karakter yang akan dihapus!