Regex.Replace
This C# method processes text replacements. It handles simple and complex replacements. For complex patterns, we use a MatchEvaluator
delegate to encode the logic.
With Regex.Replace
, we can change a string
with lowercased words to have uppercased ones. Regex.Replace
is powerful—many other replacements can be done.
This program uses the Regex.Replace
static
method with a string
replacement. It is possible to specify a delegate of type MatchEvaluator
for more complex replacements.
string
.Regex
method allows you to replace variations in the string in one statement.using System; using System.Text.RegularExpressions; // Input string. string input = "abc def axe"; Console.WriteLine(input); // Use Regex.Replace to replace the pattern in the input. string output = Regex.Replace(input, @"a..", "CHANGED"); Console.WriteLine(output);abc def axe CHANGED def CHANGED
MatchEvaluator
We can specify a MatchEvaluator
. This is a delegate method that the Regex.Replace
method calls to modify the match. Here we use MatchEvaluator
to uppercase matches.
Regex.Replace
for simple replacements by using a string
argument. For complex replacements, use MatchEvaluator
.Regex.Replace
, we use the delegate syntax for a method that alters strings to have an uppercase first letter.using System; using System.Text.RegularExpressions; class Program { static void Main() { // Input strings. const string s1 = "marcus aurelius"; const string s2 = "the golden bowl"; const string s3 = "Thomas jefferson"; // Write output strings. Console.WriteLine(TextTools.UpperFirst(s1)); Console.WriteLine(TextTools.UpperFirst(s2)); Console.WriteLine(TextTools.UpperFirst(s3)); } } public static class TextTools { /// <summary> /// Uppercase first letters of all words in the string. /// </summary> public static string UpperFirst(string s) { return Regex.Replace(s, @"\b[a-z]\w+", delegate(Match match) { string v = match.ToString(); return char.ToUpper(v[0]) + v.Substring(1); }); } }Marcus Aurelius The Golden Bowl Thomas Jefferson
Microsoft indicates we can use MatchEvaluator
to perform validation. We can use it "to perform custom verifications or operations at each Replace
operation."
Dictionary
of words that need special-casing.Regex.Replace
can be used in 2 ways. The MatchEvaluator
delegate offers a high degree of control. With a string
, the Regex.Replace
method can be used for simpler tasks.