开发者

ASP.NET C# String.Split

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!


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


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


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#?


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜