JavaScript, replace()
alt dizeleri değiştirmek için String nesnesi yöntemine sahiptir . Bu yöntemin iki argümanı olabilir. İlk bağımsız değişken bir dize veya normal ifade deseni (regExp nesnesi) ve ikinci bağımsız değişken bir dize veya işlev olabilir. Her replace()
iki dize bağımsız değişkenine sahip bir yöntem örneği aşağıda gösterilmiştir.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
İlk bağımsız değişken dize ise, yukarıdaki örnekte olduğu gibi alt dizenin yalnızca ilk tekrarının değiştirildiğini unutmayın. Alt dizenin tüm tekrarlamalarını değiştirmek için g
(genel) bayrağıyla düzenli bir ifade sağlamanız gerekir . Genel bayrağı sağlamazsanız, ilk bağımsız değişken olarak normal ifadeyi sağlasanız bile, alt dizenin yalnızca ilk örneği değiştirilir. Şimdi one
yukarıdaki örnekteki tüm oluşumları değiştirelim .
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Normal ifade desenini regExp nesnesi değil, bir dize haline getirecek tırnak işaretleri içine almazsınız. Büyük / küçük harf duyarsız bir değiştirme yapmak için i
, deseni büyük / küçük harf duyarsız yapan ek bayrak sağlamanız gerekir . Bu durumda, yukarıdaki düzenli ifade olacaktır /one/gi
. i
Buraya eklenen bayrağa dikkat edin .
İkinci bağımsız değişkenin bir işlevi varsa ve bir eşleşme varsa işlev üç bağımsız değişkenle iletilir. İşlevin aldığı argümanlar eşleşme, eşleşmenin konumu ve orijinal metindir. Bu eşleşmenin değiştirilmesi gereken şeyi döndürmeniz gerekir. Örneğin,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
İkinci argüman olarak bir işlev kullanarak yeni metin üzerinde daha fazla kontrole sahip olabilirsiniz.
str_replace
aynı uzunlukta iki diziyi kabul ettiğini fark etti , burada ilk dizideki her dize aynı dizindeki ikinci dizideki dize ile değiştirildi. Javascript bu tam davranış taklit şimdiye kadar buldum tek doğru işlevi için stackoverflow.com/a/5069776/296430 bakınız .