C# projenizde bir metin içerisinde bir kelimeyi değiştirmek istediğinizde genellikle String > Replace metodunu kullanırsınız. Bu metodun en büyük sıkıntısı, kelimeyi olduğu gibi aramasıdır (küçük, büyük harfe dikkat eder). Örneğin “Yazılım Dilleri – yazılım dillerinin buluşma noktası” metni içerisinde “yazılım” kelimesinin yerine “YAZILIM” kelimesini yazalım.
string metin = "Yazılım Dilleri - yazılım dilleri'nin buluşma noktası"; string sonuc = metin.Replace("yazılım", "YAZILIM"); Console.WriteLine(sonuc);
Kodu çalıştırdığınızda sadece 2. “yazılım” kelimesinin değiştiğini göreceksiniz. İlk kelime, “yazılım” kelimesi ile birebir (büyük küçük harfleri) uyuşmadığı için değişmedi.
String değiştirme işlemini case insensitive (küçük büyük harf duyarsız) yapabilmek için Regex sınıfından faydalanacağız. Regex sınıfının Replace metodu ile string değiştirme işlemini gerçekleştireceğiz. Case insensitive kontrolünü ise Regex nesnesinin Constructor’ında tanımlayacağız (RegexOptions.IgnoreCase)
Regex rx = new Regex(eskiDeger, RegexOptions.IgnoreCase); return rx.Replace(metin, yeniDeger);
Kodları projemize dahil edip çalıştıralım. Sonuç olarak iki “yazılım” kelimesinin de (baştaki “Yazılım” ve ortadaki “yazılım kelimelerinin) değiştiğini göreceksiniz.
class Program { static void Main(string[] args) { Console.WriteLine(KelimeDegistir("Yazılım Dilleri - yazılım dilleri'nin buluşma noktası", "yazılım", "YAZILIM")); } private static string KelimeDegistir(string metin, string eskiDeger, string yeniDeger) { Regex rx = new Regex(eskiDeger, RegexOptions.IgnoreCase); return rx.Replace(metin, yeniDeger); } }
Yepyeni makalelerde görüşmek dileğiyle :)
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com