Wyszukiwanie i zamiana tekstu

C#:
Wyszukiwanie i zamiana tekstu

Jak to zrobić:

W C# używamy głównie klasy String. Oto jak szukać i zamieniać tekst:

string source = "Witaj świecie! Hello World!";
string toFind = "świecie";
string replaceWith = "programisto";

// Zamiana tekstu
string replaced = source.Replace(toFind, replaceWith);
Console.WriteLine(replaced);  // Wynik: "Witaj programisto! Hello World!"

A co jeśli chcesz coś bardziej zaawansowanego? Na przykład, zamienić wyłącznie pierwsze wystąpienie frazy. Regułki (regex) wchodzą do gry:

using System.Text.RegularExpressions;

string text = "Kot, kot, coś tam kot.";
string pattern = "kot";
string replacement = "pies";
string result = Regex.Replace(text, pattern, replacement, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500));

Console.WriteLine(result);  // Wynik: "Pies, kot, coś tam kot."

To tylko ignoryje wielkość liter i zamienia pierwsze wystąpienie, dzięki parametrowi RegexOptions.IgnoreCase.

Deep Dive

Szukanie i zamiana tekstu to funkcjonalności które miały swoje początki w edytorach tekstu lat 60-tych. Obecne implementacje, jak regex, pochodzą z prac Stephena Cole’a Kleene’a.

Alternatywy? Jak najbardziej. Pluginy do IDE, narzędzia do obsługi tekstów jak sed, awk w Unix lub PowerShell w Windows. Składnia różni się, ale idea ta sama.

Szukanie i zamiana w C# pod spodem działają na tablicach znaków. Ma to wpływ na wydajność – szczególnie przy dużych ciągach tekstowych.

See Also

Co dalej? Eksperymentuj. Może dodaj odrobinę LINQ do przeszukiwania kolekcji tekstu. Przede wszystkim jednak, baw się swoim kodem. To najlepsza metoda nauki.