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.
Here We use a pattern to replace all 3-letter sequences starting and ending with certain letters with a replacement string.
Tip The Regex method allows you to replace variations in the string in one statement.
// Input string.
string input = "abc def axc";
// Use Regex.Replace to replace the pattern in the input.
string output = Regex.Replace(input, @"a..", "CHANGED");
Console.WriteLine(output);abc def axc
CHANGED def CHANGEDa First letter starts with lowercase a.
.. Two characters of any kind.
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.
Tip You can use Regex.Replace for simple replacements by using a string argument. For complex replacements, use MatchEvaluator.
Here In Regex.Replace, we use the delegate syntax for a method that alters strings to have an uppercase first letter.
Note Delegate methods are methods you can use as variables and parameters. They introduce some syntactic complexity.
static void Main()
// Input strings.
const string s1 = "marcus aurelius";
const string s2 = "the golden bowl";
const string s3 = "Thomas jefferson";
// Write output strings.
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) + v.Substring(1);
The Golden Bowl
Thomas Jefferson\b Word break:
Matches where a word starts.
[a-z] Matches any lowercase ASCII letter.
We only need to match words with lowercase first letters.
This is a character range expression.
\w+ Word characters:
Matches must have one or more characters.
Other uses. Microsoft indicates we can use MatchEvaluator to perform validation. We can use it "to perform custom verifications or operations at each Replace operation."
Tip To enhance this capitalization algorithm, you could store a Dictionary of words that need special-casing.
However This requires a bit of manual work to find most of the names using different rules.
A summary. 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.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.