TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C# Regex Trim Example

These C# examples show how to remove whitespace from strings with Regex.Replace and patterns.

Regex trim. Regex can be used to trim whitespace.

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.

RegexOptions.Multiline

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.

TrimTrimEnd, TrimStart

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.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf