Saya ingin menggunakan str_replace
atau alternatif serupa untuk mengganti beberapa teks dalam JavaScript.
var text = "this is some sample text that i want to replace";
var new_text = replace_in_javascript("want", "dont want", text);
document.write("new_text");
harus memberi
this is some sample text that i dont want to replace
Jika Anda akan regex, apa implikasi kinerja dibandingkan dengan metode penggantian bawaan.
str_replace
juga menerima dua array dengan panjang yang sama, di mana setiap string dalam array pertama diganti dengan string dalam array kedua pada indeks yang sama. Silakan lihat stackoverflow.com/a/5069776/296430 untuk satu-satunya fungsi yang benar yang saya temukan sejauh ini yang meniru perilaku persis ini dalam javascript.Jawaban:
Menggunakan regex untuk penggantian string secara signifikan lebih lambat daripada menggunakan penggantian string.
Seperti yang ditunjukkan pada JSPerf , Anda dapat memiliki tingkat efisiensi yang berbeda untuk membuat regex, tetapi semuanya secara signifikan lebih lambat daripada penggantian string sederhana. Regex lebih lambat karena :
Untuk uji coba sederhana pada halaman JS perf, saya telah mendokumentasikan beberapa hasil:
Hasil untuk Chrome 68 adalah sebagai berikut:
Dari demi kelengkapan jawaban ini (meminjam dari komentar), perlu disebutkan bahwa
.replace
hanya menggantikan contoh pertama dari karakter yang cocok. Hanya mungkin untuk mengganti semua instance dengan//g
. Pertukaran kinerja dan keanggunan kode bisa dikatakan lebih buruk jika mengganti beberapa instancename.replace(' ', '_').replace(' ', '_').replace(' ', '_');
atau lebih burukwhile (name.includes(' ')) { name = name.replace(' ', '_') }
sumber
.replace
hanya menggantikan contoh pertama dari karakter yang cocok. Hanya mungkin untuk mengganti semua instance dengan//g
. Pertukaran kinerja dapat dikatakan lebih buruk jika mengganti beberapa instancename.replace(' ', '_').replace(' ', '_').replace(' ', '_');
atau lebih burukwhile (name.includes(' ')) { name = name.replace(' ', '_') }
Anda akan menggunakan
replace
metode ini:Argumen pertama adalah apa yang Anda cari, tentu saja. Itu juga dapat menerima ekspresi reguler.
Ingatlah bahwa itu tidak mengubah string asli. Ini hanya mengembalikan nilai baru.
sumber
Lebih sederhana:
Ganti semua spasi dengan '_'!
sumber
.replace(/\\x3B/g,';')
Semua metode ini tidak mengubah nilai asli, mengembalikan string baru.
Mengganti ruang 1 dengan _
Mengganti semua spasi dengan _ menggunakan regex. Jika Anda perlu menggunakan regex, maka saya sarankan mengujinya dengan https://regex101.com/
Mengganti semua spasi dengan _ tanpa regex . Cara fungsional.
sumber
Anda harus menulis sesuatu seperti itu:
sumber
Kode yang diberikan orang lain hanya menggantikan satu kemunculan, saat menggunakan ekspresi reguler menggantikan semuanya (seperti kata @sorgit). Untuk mengganti semua "ingin" dengan "tidak mau", beri kami kode ini:
Variabel "new_text" akan menghasilkan "ini adalah beberapa contoh teks yang tidak ingin saya ganti".
Untuk mendapatkan panduan singkat tentang ekspresi reguler, buka di sini:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
Untuk mempelajari lebih lanjut
str.replace()
, buka di sini:https://developer.mozilla.org/ id-AS / docs / JavaScript / Referensi / Global_Objects / String / ganti
Good luck!
sumber
Belum tentu. lihat jawaban Hans Kesting:
sumber
hm .. Apakah Anda memeriksa ganti ()?
Kode Anda akan terlihat seperti ini
sumber
sumber
Dalam JavaScript, Anda memanggil
replace
metode pada objek String, misalnya"this is some sample text that i want to replace".replace("want", "dont want")
, yang akan mengembalikan string yang diganti.sumber
JavaScript memiliki
replace()
metode objek String untuk mengganti substring. Metode ini dapat memiliki dua argumen. Argumen pertama dapat berupa string atau pola ekspresi reguler (objek regExp) dan argumen kedua dapat berupa string atau fungsi. Contohreplace()
metode yang memiliki kedua argumen string ditunjukkan di bawah ini.Perhatikan bahwa jika argumen pertama adalah string, hanya kemunculan pertama dari substring yang diganti seperti pada contoh di atas. Untuk mengganti semua kemunculan substring Anda perlu memberikan ekspresi reguler dengan
g
bendera (global). Jika Anda tidak memberikan flag global, hanya kemunculan substring pertama yang akan diganti bahkan jika Anda memberikan ekspresi reguler sebagai argumen pertama. Jadi mari kita ganti semua kejadianone
dalam contoh di atas.Perhatikan bahwa Anda tidak membungkus pola ekspresi reguler dalam tanda kutip yang akan membuatnya menjadi string bukan objek regExp. Untuk melakukan penggantian case-insensitive Anda perlu memberikan flag tambahan
i
yang membuat pola case-insensitive. Jika demikian, persamaan reguler di atas adalah/one/gi
. Perhatikani
bendera yang ditambahkan di sini.Jika argumen kedua memiliki fungsi dan jika ada kecocokan fungsi dilewatkan dengan tiga argumen. Argumen fungsi yang didapat adalah kecocokan, posisi kecocokan dan teks asli. Anda harus mengembalikan pertandingan apa yang harus diganti. Sebagai contoh,
Anda dapat memiliki kontrol lebih besar atas teks pengganti menggunakan fungsi sebagai argumen kedua.
sumber
Kamu bisa memakai
Dan untuk mengubah banyak nilai dalam satu string sekaligus, misalnya mengubah # ke string v dan _ ke string w:
sumber
Jika Anda benar-benar ingin yang setara dengan PHP,
str_replace
Anda dapat menggunakan Locutus . Versi PHPstr_replace
mendukung lebih banyak opsi daripada yangString.prototype.replace
didukung JavaScript . Misalnya tag:atau array
Juga ini tidak menggunakan regex melainkan digunakan untuk loop. Jika Anda tidak ingin menggunakan regex tetapi ingin penggantian string sederhana, Anda dapat menggunakan sesuatu seperti ini (berdasarkan Locutus)
untuk info lebih lanjut lihat kode sumber https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
sumber
Sudah ada beberapa jawaban menggunakan str.replace () (yang cukup adil untuk pertanyaan ini) dan
regex
tetapi Anda dapat menggunakan kombinasi str.split () dan join () bersama-sama yang lebih cepat daripadastr.replace()
danregex
.Di bawah ini adalah contoh kerja:
sumber
Anda memiliki opsi berikut:
Info lebih lanjut -> di sini
sumber
Dalam Javascript, ganti fungsi yang tersedia untuk mengganti sub-string dari string yang diberikan dengan yang baru. Menggunakan:
Anda bahkan dapat menggunakan ekspresi reguler dengan fungsi ini. Misalnya, jika ingin mengganti semua kemunculan
,
dengan.
.Di sini
g
pengubah digunakan untuk mencocokkan secara global semua pertandingan yang tersedia.sumber
Metode untuk
replace substring in a sentence
menggunakan Bereaksi:RunMethodHere
sumber
Jika Anda tidak ingin menggunakan regex maka Anda dapat menggunakan fungsi ini yang akan mengganti semua dalam sebuah string
Kode sumber:
Cara Penggunaan:
sumber
Gunakan
String.prototype.replace
argumen JS pertama harus pola Regex atau String dan argumen kedua harus menjadi String atau fungsi.str.replace(regexp|substr, newSubStr|function);
Ex:
var str = 'this is some sample text that i want to replace'; var newstr = str.replace(/want/i, "dont't want"); document.write(newstr); // this is some sample text that i don't want to replace
sumber
Anda tidak perlu perpustakaan tambahan.
sumber
Menambahkan metode
replace_in_javascript
yang akan memenuhi kebutuhan Anda. Juga menemukan bahwa Anda menulis string"new_text"
didocument.write()
mana seharusnya merujuk ke variabelnew_text
.sumber