Andrew White
Andrew White

Reputation: 1789

C#: String split returning list of strings AND list of delimiters?

Is there any inbuilt way in C# to split a text into an array of words and delimiters? What I want is:

text = "word1 + word2 - word3";
string[] words = text.Split(new char[] { '+', '-'});
//Need list '+', '-' here?

Any ideas? Obviously I can just process the text by hand... :)

Upvotes: 4

Views: 820

Answers (2)

Sijin
Sijin

Reputation: 4550

Use Regex.split() with capturing parentheses http://msdn.microsoft.com/en-us/library/byy2946e.aspx

string input = @"07/14/2007";   
string pattern = @"(-)|(/)";

foreach (string result in Regex.Split(input, pattern)) 
{
   Console.WriteLine("'{0}'", result);
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007'

Upvotes: 9

Hans Olsson
Hans Olsson

Reputation: 55009

Not that I'm aware of, but I suppose you could do it with a regular expression. Just write it to pick up only your delimiters and then use Regex.Matches and the collection that is returned should contain the delimiters. See here for more info including a short sample.

Upvotes: 0

Related Questions