4

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!

4 Answers 4

15

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);
Sign up to request clarification or add additional context in comments.

1 Comment

Good call on using readonly static variable to store the split characters. This is often overlooked, but for the worst case, it can have a performance impact.
4

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);

Comments

1

This will remove spaces:

RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"[ ]{2,}", options);     
tempo = regex.Replace(tempo, @" ");

Then you can split normally

How do I replace multiple spaces with a single space in C#?

How to remove extra space between two words using C#?

Comments

0
string s1 = "Blood  Doner Jack Stv 240 o+";
Regex r = new Regex(@"\s+");
string s2 = r.Replace(s1, @" ");
string[] s3 = s2.Split(' ');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.