2011-08-08 19 views
5

Temel olarak, bir kelime dizesinde (harf duyarsız olarak) '' kelimenin 'karakter kümesini' 'ile ifade etmem gerekiyor ve eşleşiyorsa, ilk harfinin ardından bir sembol eklemem gerekiyor. o belirli karakter kümeleri. Arama değiştirmeyi kullanamıyorum, çünkü bu durumu koruyamaz.Javascript büyük harf duyarlı olmayan eşleme ve değiştirme?

Örnek:

Kahverengi kek, bir fırın içinde bulunmaktadır. Benim aradığım kelime brown ve ben eklemek istediğiniz karakteri * ise

, sonucu olmalıdır:

B * rown b * rownies bir fırın vardır.

JS ürününün en iyi yolu nedir? hile yok 'ig' seçeneği ile

var re = /(B)(rown)/gi; 

console.log("Brown brownies are in an oven".replace(re, "$1*$2")); 

cevap

1
function astAfterFirstLetter(words) { 
    var re = new RegExp("\\b(?=" + words.join("|") + "\\b)(\\w)(\\w*)", "gi"); 
    return function (str) { return str.replace(re, "$1*$2"); }; 
} 

astAfterFirstLetter(["brown", "cow"])("How now brown cow!") 

ise de başarısız olacaktır Bu yalnızca belirli bir kelime için/dize kombinasyonu, daha evrensel olmak zorunda

How now b*rown c*ow! 
+0

Sadece 'i' işaretini eklemek için OP – Mrchief

+0

@Mrchief'e göre büyük/küçük harfe duyarlıdır. düzenlendi. –

1

Sen gibi regex, bir şey kullanın.

"Brown brownies are in an oven.".replace(/(b)(rown)/gi, "$1*$2") 
+0

üretir. –

+0

Nasıl? Regex modelinizi dinamik olarak yaratabilirsiniz, eğer yardımcı olursa. – Mrchief

+1

[\ w +] 'ne elde edilmeli? Artı işareti, kelime karakteri veya boşluk ile eşleşen bir şey yoktur. –

İlgili konular