C#‘da Regex
Kullanarak Seçilen Metni Nasıl Alırsınız
C#‘da dizelerle çalışırken, kalıplara dayalı belirli bilgileri çıkarmanız gereken durumlarla karşılaşabilirsiniz. Yaygın bir sorun, regex işlevselliğini Perl gibi dillerden C#‘a çevirmektir. Bu blog yazısı, C#‘da Regex
kullanarak seçilen metni nasıl alacağınızı ele alıyor ve size basit ve net çözümler sunuyor.
Problemin Açıklaması
Diyelim ki, çıkarmak istediğiniz bir kalıp içeren bir dizeye sahipsiniz. Örneğin, “Index: 25” gibi bir dizeye sahipseniz ve “25” sayısını tam sayı olarak almak istiyorsanız, genellikle kalıbı bulmak için regex kullanırsınız. Perl’de bu, aşağıdaki kodla yapılabilir:
$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}
Bu örnekte, regex kalıbı /Index: (\d*)/
“Index: " alt dizesini takiben rakamları arar ve rakamları daha sonra kullanmak üzere yakalar. Ancak, aynı işlevselliği C#‘da nasıl elde edebiliriz?
C#‘da Çözüm
Şimdi, aynı işlevselliği C#‘da nasıl uygulayacağınızı adım adım inceleyelim. “Index: " sonrasındaki sayıyı çıkarmak için C#‘da eşdeğer bir kod parçası yazmanın adımları aşağıda verilmiştir.
Adım 1: Gerekli Ad Alanlarını İçe Aktarın
Öncelikle, regex işlemleri için ihtiyacınız olan Regex
sınıfını sağlayan System.Text.RegularExpressions
ad alanını içe aktardığınızdan emin olun.
using System.Text.RegularExpressions;
Adım 2: Regex Kalıbınızı Tanımlayın
Perl’de kullandığınız aynı kalıp ile bir Regex
nesnesi oluşturun:
Regex re = new Regex(@"Index: (\d*)");
Adım 3: Kalıbı Dizenizle Eşleştirin
Sonra, regex’i girdi dizenizle eşleştirmeniz gerekecek:
Match m = re.Match(s); // 's', girdi dizesidir
Adım 4: Eşleşen Değeri Çıkarın
Artık bir eşleşme bulunup bulunmadığını kontrol edebilir ve Perl’de yaptığınız gibi yakalanan grubu çıkarabilirsiniz:
int indexVal = 0; // Varsayılan değer
if(m.Success)
{
// Yakalanan grup 1. indekstedir
int.TryParse(m.Groups[1].Value, out indexVal); // Güvenlik için out parametresi
}
Tam C# Kodu Örneği
İşte tam kodun C# bağlamında nasıl görünebileceğine dair bir örnek:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string s = "Index: 25"; // Örnek girdi dizesi
int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)");
Match m = re.Match(s);
if(m.Success)
{
int.TryParse(m.Groups[1].Value, out indexVal);
}
Console.WriteLine("Bulunan Index Değeri: " + indexVal);
}
}
Sonuç
C#‘da Regex
kullanarak seçilen metni almak, diğer programlama dillerinden (Perl gibi) geçişi anladıktan sonra oldukça basittir. Yukarıda açıklanan adımları takip ederek, bir dizeden regex kalıpları kullanarak gerekli bilgileri etkili bir şekilde çıkarabilirsiniz.
Ana Nokta
- Regex kalıplarını anlamak, C#‘da etkili metin çıkarımı için kritik öneme sahiptir. Bunu öğrendikten sonra, çeşitli programlama dillerinde benzer işlevsellik bulacaksınız.
Farklı kalıplarla denemeler yapmaktan ve C#‘da Regex
sınıfının olanaklarını keşfetmekten çekinmeyin. İyi kodlamalar!