C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Pattern: 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.
Parameters: Regex.Replace is a public static method and we pass it 3 parameters—the input, the pattern and the replacement string data.
Next: The program replaces all parts of the source string that start with N and ending with lowercase t with another 3 letters.
C# program that uses Regex.Replace method
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
// This is the input string we are replacing parts from.
string input = "Dot Net Not Perls";
// Use Regex.Replace to replace the pattern in the input.
// ... The pattern N.t indicates three letters.
// ... N, any character, and t.
string output = Regex.Replace(input, "N.t", "NET");
// Write the output.
Console.WriteLine(input);
Console.WriteLine(output);
}
}
Output
Dot Net Not Perls
Dot NET NET Perls
String: You can use Regex.Replace for simple replacements by using a string argument. For complex replacements, use MatchEvaluator.
UpperFirst: In Regex.Replace, we use the delegate(Match match) syntax for a method that alters strings to have an uppercase first letter.
Tip: Delegate methods are methods you can use as variables and parameters. They introduce some syntactic complexity.
C# program that capitalizes strings
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);
});
}
}
Output
Marcus Aurelius
The Golden Bowl
Thomas Jefferson
Regex pattern description
\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.
Tip: To enhance this capitalization algorithm, you could store a Dictionary of words that need special-casing, such as DeBruijn.
However: This requires a bit of manual work to find most of the names using different rules.