niedziela, 20 lipca 2008

Wyrażenia regularne w C# - podmiana

Wyrażenia regularne pozwalają także na podmianę tekstu na podstawie podanych wzorców. Klasa Regex posiada metodę Replace umożliwiającą podmianę tekstu.
Najprostszy sposób to wywołanie metody, której argumentami są: ciąg wejściowy, wzorzec oraz ciąg, który zostanie użyty do podmiany.


string tekst = "Ala mz kota, a kot mw Ale";
string podmiana = Regex.Replace(tekst, "m.", "ma"); // podmień tekst rozpoczynający się od m i kończący się dowolnym znakiem
Console.WriteLine(podmiana); // wyświetlenie podmienionego tekstu


Bardziej rozbudowana wersja tej metody pozwala na zastosowanie delegatów wywoływanych w momencie dopasowania do wzorca.


class Program
{
private static string ReplaceMethod(Match m)
{
Console.WriteLine(m.Value); // znaleziony tekst
return "ma"; // zwrócenie tekstu który znajdzie się w miejscu dopasowania
}

static void Main(string[] args)
{
string tekst = "Ala mz kota, a kot mw Ale";
string podmiana = Regex.Replace(tekst, "m.", ReplaceMethod);
Console.WriteLine(podmiana);
Console.ReadKey();
}
}

wtorek, 8 lipca 2008

Wyrażenia regularne w C#

Wyrażenia regularne to podstawowe narzędzie przy analizie i modyfikacji tekstu. C# też oferuje odpowiednią klasę do używania wyrażeń regularnych. Mowa tu o klasie Regex.
Klasy można używać w dwojaki sposób, tworząc obiekty tej klasy lub też korzystać ze statycznych metod. W tych dwóch przypadkach, postępuje się w podobny sposób.

Wyszukiwanie tekstu

Klasa Regex posiada dwie metody posiadające kilka innych wariantów: Match i Matches. Pierwsza z nich zwraca jedynie pierwszy wynik wyszukiwania w postaci obiektu klasy Match.

string tekst = "Ala ma kota, a kot ma Ale";
Match match = Regex.Match(tekst,"kot.?");
while (match.Success) // czy zostało coś znalezione
{
Console.WriteLine(match.Value); // Wyświetlenie wyniku wyszukiwanie
match = match.NextMatch(); // odczytanie następnego wyniku
}

W powyższym przykładzie zastosowana została metoda Match, która zwraca pojedynczy wynik oraz metoda NextMatch(), która zwraca kolejny. Można pobrać całą kolekcję wyników przy pomocy metody Matches.

string tekst = "Ala ma kota, a kot ma Ale";
MatchCollection matches = Regex.Matches(tekst, "kot.?");
foreach (Match m in matches)
{
Console.WriteLine(m.Value);
}

poniedziałek, 7 kwietnia 2008

Witam na moim blogu

Postanowiłem, że pod adresem rychlik.eu będzie mój blog. Będzie to znacznie lepsze rozwiązanie niż prawie "nieżywa" strona. Na tym blogu skupię się głównie na moich zainteresowaniach czyli programowanie w C#, Ruby itp. Poza tym znajdą się tu różne ciekawe "znaleziska" z sieci, część z nich bezpośrednio na blogu, reszta na moim profilu del.icio.us.