C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Trimming a string removes whitespace and leaves only the important contents. Several methods are available, each with pluses and minuses. We trim strings using Regex in the C# programming language.
Example. Regexes are very powerful, but also very powerful in giving me headaches. One problem I encountered was a multiple-line string. With Regex, you must indicate how you want the engine to treat newlines (\n).
Note: The two options we use are RegexOptions.Multiline and RegexOptions.Singleline.
Note 2: My requirements were to trim the beginning and ending whitespace from a medium size (maybe several kilobytes) string.
C# program that trims with Regex using System; using System.Text.RegularExpressions; class Program { static void Main() { // // Example string // string source = " Some text "; // // Use the ^ to always match at the start of the string. // Then, look through all WHITESPACE characters with \s // Use + to look through more than 1 characters // Then replace with an empty string. // source = Regex.Replace(source, @"^\s+", ""); // // The same as above, but with a $ on the end. // This requires that we match at the end. // source = Regex.Replace(source, @"\s+$", ""); Console.Write("["); Console.Write(source); Console.WriteLine("]"); } } Output [Some text]
Example 2. Readers have commented on compiled Regex objects. Compiled regexes do make a substantial performance improvement. My quick tests showed that for using two compiled regexes 1,000 times each was about 47% faster than not compiling them.
Fragment that shows compiled Regex: C# // // Use two precompiled Regexes. // Regex a1 = new Regex(@"^\s+", RegexOptions.Compiled); Regex a2 = new Regex(@"\s+$", RegexOptions.Compiled); foreach (object item in _collection) // Example loop. { // // Reuse the compiled regex objects over and over again. // string source = " Some text "; source = a1.Replace(source, ""); source = a2.Replace(source, ""); // compiled: 3620 }
Example 3. Here we look at another way you can trim strings using Regex. What if we could combine the two above regular expressions into a single one, and then compile that? Well, we certainly can do that, and I wrote the code.
Fragment that shows alternate syntax: C# string source = " Some text "; // // Use the alternate syntax "|" for combining both regexes. // source = Regex.Replace(source, @"^\s+|\s+$", ""); // // Same as before but with the two alternates switched. // source = Regex.Replace(source, @"\s+$|^\s+", ""); // ... we could compile all of these too. //
Discussion. We need a balance between development time and code size. If you need Trim with different requirements than the built-in methods, the Regex methods will be easier. If it is at all reasonable for you to use the built-in Trim, do so.
Summary. We looked at some methods of trimming the starts and ends of strings using the System.Text.RegularExpressions namespace in the C# language. For my projects where performance is critical, I don't use Regex.
Note: Some programs focus on speed. But for many tasks, such as processing data in the background, Regex is ideal.