How to: Parse Strings Using String.Split (C# Guide)

The String.Split method creates an array of substrings by splitting the input string based on one or more delimiters. It is often the easiest way to separate a string on word boundaries. It is also used to split strings on other specific characters or strings.

Note

The C# examples in this article run in the Try.NET inline code runner and playground. You can run an example in an interactive window by pressing the Run button. Once you execute the code, you can modify it and run the modified code by pressing Run again. The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

The following code splits a common phrase into an array of strings for each word.

string phrase = "The quick brown fox jumped over the lazy dog.";
string[] words = phrase.Split(' ');

foreach(var word in words)
    Console.WriteLine($"<{word}>");

Every instance of a separator character produces a value in the returned array. Consecutive separator characters produce the empty string as a value in the returned array. You can see this in the following example, which uses space as a separator:

string phrase = "The quick brown    fox     jumped over the lazy dog.";
string[] words = phrase.Split(' ');

foreach(var word in words)
    Console.WriteLine($"<{word}>");

This behavior makes it easier for formats like comma separated values (CSV) files representing tabular data. Consecutive commas represent a blank column.

You can pass an optional StringSplitOptions.RemoveEmptyEntries parameter to exclude any empty strings in the returned array. For more complicated processing of the returned collection, you can use LINQ to manipulate the result sequence.

String.Split can use multiple separator characters. The following example uses spaces, commas, periods, colons, and tabs, all passed in an array containing these separating characters, to Split. The loop at the bottom of the code displays each of the words in the returned array.

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");

foreach (string s in words)
{
    System.Console.WriteLine($"<{s}>");
}

Consecutive instances of any separator produce the empty string in the output array:

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

string text = "one\ttwo :,five six seven";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");

foreach (string s in words)
{
    System.Console.WriteLine($"<{s}>");
}

String.Split can take an array of strings (character sequences that act as separators for parsing the target string, instead of single characters).

string[] separatingChars = { "<<", "..." };  

string text = "one<<two......three<four";  
System.Console.WriteLine("Original text: '{0}'", text);  

string[] words = text.Split(separatingChars, System.StringSplitOptions.RemoveEmptyEntries );  
System.Console.WriteLine("{0} substrings in text:", words.Length);  

foreach (string s in words)  
{  
    System.Console.WriteLine(s);  
}  

You can try these samples by looking at the code in our GitHub repository

See Also

C# Programming Guide
Strings
.NET Framework Regular Expressions