Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET C# String.Split

Tags:

c#

asp.net

I want to split a string if there is a space between words.

For example:

"Blood Doner Jack Stv 240 o+"

When I split it using a single space it returns an array object with 6 items, but if I try it with the same set of text and there are 2 spaces in place of one it increase the array to 7:

"Blood  Doner Jack Stv 240 o+"

So I want to know how to remove split it with a double space as well as a single.

I know I can use Replace() with 2 spaces to 1 space but what if I have 3 or 4 spaces?

Thanks in advance!

like image 855
Moksha Avatar asked Nov 30 '22 08:11

Moksha


2 Answers

You can use the overload of String.Split which takes a StringSplitOptions:

string[] bits = text.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

Note that to avoid creating a char array on each call, you could use:

private static readonly char[] SplitSeparators = {' '};

...

string[] bits = text.Split(SplitSeparators,
                           StringSplitOptions.RemoveEmptyEntries);
like image 158
Jon Skeet Avatar answered Dec 02 '22 20:12

Jon Skeet


just use StringSplitOptions.RemoveEmptyEntries:

 var s = "Blood  Doner Jack Stv 240 o+";
 var arr = s.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);

Or you can replace many spaces with one using Regexp, and than Split:

string str = System.Text.RegularExpressions.RegEx.Replace(s ,@"\s+"," ");
var arr = str.Split(new[] {" "}, StringSplitOptions.None);
like image 37
Andrew Orsich Avatar answered Dec 02 '22 22:12

Andrew Orsich