Ada banyak jawaban di sini, dan semuanya didasarkan pada dua metode:
- METODE1: pisahkan string menggunakan dua substring dan isi karakter di antara mereka
- METHOD2: konversikan string ke karakter array, ganti satu anggota array dan bergabunglah
Secara pribadi, saya akan menggunakan dua metode ini dalam kasus yang berbeda. Biarkan saya jelaskan.
@FabioPhms: Metode Anda adalah yang awalnya saya gunakan dan saya takut itu buruk pada string dengan banyak karakter. Namun, pertanyaannya adalah apa yang banyak karakter? Saya mengujinya pada 10 paragraf "lorem ipsum" dan butuh beberapa milidetik. Lalu saya mengujinya pada string 10 kali lebih besar - benar-benar tidak ada perbedaan besar. Hm
@vsync, @Cory Mawhorter: Komentar Anda tidak ambigu; Namun, sekali lagi, apa itu string besar? Saya setuju bahwa untuk 32 ... kinerja 100kb harus lebih baik dan kita harus menggunakan substring-varian untuk operasi penggantian karakter yang satu ini.
Tetapi apa yang akan terjadi jika saya harus membuat beberapa penggantian?
Saya perlu melakukan tes sendiri untuk membuktikan apa yang lebih cepat dalam kasus itu. Katakanlah kita memiliki algoritma yang akan memanipulasi string yang relatif pendek yang terdiri dari 1000 karakter. Kami berharap bahwa rata-rata setiap karakter dalam string itu akan diganti ~ 100 kali. Jadi, kode untuk menguji sesuatu seperti ini adalah:
var str = "... {A LARGE STRING HERE} ...";
for(var i=0; i<100000; i++)
{
var n = '' + Math.floor(Math.random() * 10);
var p = Math.floor(Math.random() * 1000);
// replace character *n* on position *p*
}
Saya membuat biola untuk ini, dan itu ada di sini . Ada dua tes, TEST1 (substring) dan TEST2 (konversi array).
Hasil:
Tampaknya konversi array mengalahkan substring dengan 2 kali lipat! Jadi - apa yang terjadi di sini ???
Apa yang sebenarnya terjadi adalah bahwa semua operasi di TEST2 dilakukan pada array itu sendiri, menggunakan ekspresi penugasan seperti strarr2[p] = n
. Penugasan benar-benar cepat dibandingkan dengan substring pada string besar, dan jelas bahwa itu akan menang.
Jadi, ini semua tentang memilih alat yang tepat untuk pekerjaan itu. Lagi.
str[0] = 'x'
sepertinya tidak menimbulkan kesalahan, namun tidak memiliki efek yang diinginkan!