Pertanyaan kecil yang sangat sederhana, tetapi saya tidak mengerti bagaimana melakukannya.
Saya perlu mengganti setiap instance '_' dengan spasi, dan setiap instance dari '#' dengan tidak ada / kosong.
var string = '#Please send_an_information_pack_to_the_following_address:';
Saya sudah mencoba ini:
string.replace('#','').replace('_', ' ');
Saya tidak begitu suka perintah chaining seperti ini. Apakah ada cara lain untuk melakukannya dalam satu?
javascript
jquery
Shannon Hochkins
sumber
sumber
Jawaban:
Gunakan operator ATAU (
|
):Anda juga bisa menggunakan kelas karakter:
Biola
Jika Anda ingin mengganti hash dengan satu hal dan garis bawah dengan yang lain, maka Anda hanya perlu rantai. Namun, Anda dapat menambahkan prototipe:
Tapi mengapa tidak berantai? Saya tidak melihat ada yang salah dengan itu.
sumber
#|_
adalah[#_]
, dan Anda mungkin juga menggunakan+
untuk mencocokkan setiap pertandingan berturut-turut untuk meningkatkan kinerjastr.replace(/[+ -]/g,'');
cukup masukkan ruang kosong di tengah.Rantai itu keren, mengapa menolaknya?
Bagaimanapun, berikut adalah opsi lain dalam satu penggantian:
Pengganti akan memilih "" jika cocok == "#", "" jika tidak.
[Perbarui] Untuk solusi yang lebih umum, Anda dapat menyimpan string pengganti di suatu objek:
sumber
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
ini membuat memodifikasi replaceChars lebih mudah.Jika Anda ingin mengganti beberapa karakter, Anda dapat memanggil
String.prototype.replace()
dengan argumen penggantian sebagai fungsi yang dipanggil untuk setiap pertandingan. Yang Anda butuhkan adalah objek yang mewakili pemetaan karakter yang akan Anda gunakan dalam fungsi itu.Misalnya, jika Anda ingin
a
diganti denganx
,b
dengany
danc
denganz
, Anda dapat melakukan sesuatu seperti ini:Output :
234xyz567yyyyxz
sumber
var
dengan diconst
sini. alternatif untuk dukungan browser yang diperluas:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Tentukan
/g
bendera (global) pada ekspresi reguler untuk mengganti semua kecocokan, bukan hanya yang pertama:Untuk mengganti satu karakter dengan satu hal dan karakter yang berbeda dengan yang lain, Anda tidak bisa benar-benar membutuhkan dua panggilan terpisah
replace
. Anda dapat mengabstraksikannya menjadi fungsi seperti yang dilakukan Doorknob, meskipun saya mungkin akan mengambilnya dengan objek yang lama / baru sebagai pasangan kunci / nilai alih-alih array datar.sumber
Anda juga dapat mencoba ini:
find
mengacu pada teks yang akan ditemukan danreplace
teks yang akan digantiIni akan menggantikan karakter tidak sensitif huruf besar / kecil. Untuk melakukan cara lain, ubah saja bendera Regex sesuai kebutuhan. Misalnya: ganti case sensitif:
sumber
Anda bisa mencoba ini:
ini akan menggantikan., - dan # dengan replacechar Anda!
sumber
Berikut cara mudah untuk melakukannya tanpa RegEx.
Anda dapat membuat prototipe dan / atau menyimpan sesuatu seperti yang diinginkan.
sumber
str.replace(/#|_/g,'')
sed
y atau à la Unixtr
), ini sepertinya jawaban yang tepat.Silakan coba:
ganti multi-string
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
ganti multi karakter
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Semoga berhasil!
sumber
Anda juga dapat mengirimkan objek RegExp ke metode ganti seperti
Javascript RegExp
sumber
replace
panggilan - ini tidak membantu menghindarinya.yourstring = '#Please send_an_information_pack_to_the_following_address:';
ganti '#' dengan '' dan ganti '_' dengan spasi
newstring2 adalah hasil Anda
sumber
var str = '#this #is__ __#a test###__';
bahwa ada beberapa ruang kosong dalam string ini.Ini adalah versi lain yang menggunakan String Prototype. Nikmati!
sumber
Saya tidak tahu apakah ini akan membantu tetapi saya ingin menghapus
<b>
dan</b>
dari string sayajadi saya menggunakan
jadi pada dasarnya jika Anda ingin mengurangi jumlah karakter dan jangan buang waktu, ini akan berguna.
sumber
Berikut ini adalah fungsi "HTML aman" menggunakan fungsi beberapa pengganti 'perkecil' (fungsi ini berlaku untuk setiap penggantian pada seluruh string, sehingga ketergantungan antar penggantian menjadi signifikan).
sumber