Saya ingin mengganti semua kemunculan titik ( .
) dalam string JavaScript
Sebagai contoh, saya punya:
var mystring = 'okay.this.is.a.string';
Saya ingin mendapatkan: okay this is a string
.
Sejauh ini saya mencoba:
mystring.replace(/./g,' ')
tapi ini berakhir dengan semua string diganti menjadi spasi.
javascript
string
replace
Omar Abid
sumber
sumber
Jawaban:
Anda perlu melarikan diri
.
karena memiliki arti "karakter yang berubah-ubah" dalam ekspresi reguler.sumber
g
pengubah pada akhir ekspresi. Anggap saja sebagai (g) secara lobal.Satu lagi solusi yang mudah dimengerti :)
sumber
Lebih cepat daripada menggunakan regex ...
EDIT:
Mungkin pada saat saya melakukan kode ini saya tidak menggunakan jsperf. Tetapi pada akhirnya diskusi seperti itu sama sekali tidak ada gunanya, perbedaan kinerja tidak sebanding dengan keterbacaan kode di dunia nyata, jadi jawaban saya masih valid, bahkan jika kinerjanya berbeda dari pendekatan regex.
EDIT2:
Saya telah membuat lib yang memungkinkan Anda melakukan ini menggunakan antarmuka yang lancar:
Lihat https://github.com/FagnerMartinsBrack/str-replace .
sumber
str.toLowerCase()
loop karena alasan kinerja. Juga, memanipulasi string yang Anda cari mungkin kurang optimal. Saya mengirim jawaban dengan versi modifikasi: stackoverflow.com/questions/2390789/…sumber
Untuk skenario sederhana ini, saya juga akan merekomendasikan untuk menggunakan metode yang disertakan dalam javascript.
Anda bisa mencoba ini:
Salam pembuka
sumber
Saya menambahkan garis miring terbalik ganda ke titik untuk membuatnya bekerja. Bersorak.
sumber
Ini lebih ringkas / mudah dibaca dan harus berkinerja lebih baik daripada yang diposting oleh Fagner Brack (toLowerCase tidak dilakukan dalam lingkaran):
Pemakaian:
sumber
sumber
replaceAll('&', '&')
:? (diakui itu bukan kasus dalam pertanyaan OP)&
sehingga loop tidak pernah kehabisan hal untuk diganti (dan string terus bertambah). Saya mencobanya sekarang dan mengunci browser saya ...Berikut implementasi lain dari replaceAll. Semoga ini bisa membantu seseorang.
Maka Anda dapat menggunakannya:
var myText = "Namaku George";
var newText = myText.replaceAll ("George", "Michael");
sumber
string.split(stringToFind).join(stringToReplace)
Contoh: Saya ingin mengganti semua Kutipan ganda (") menjadi Kutipan tunggal (') Maka kodenya akan seperti ini
sumber
@ scripto dibuat lebih ringkas dan tanpa
prototype
:Begini caranya: http://jsperf.com/replace-vs-split-join-vs-replaceall/68
sumber
sumber
sumber
Anda dapat mengganti semua kemunculan string / karakter menggunakan objek javasscript RegExp.
Ini kodenya,
sumber
sumber
createTextNode