拆分可变数量的空格

时间:2014-03-03 09:20:37

标签: c# regex

我正在尝试拆分这样的字符串:

7       300685  1235    200017  200018  200019

7
300685
1235
200017
200018
200019

字符串数组。

我已经提出了这个正则表达式,但它也保留了白色空间:

var myStrings = System.Text.RegularExpressions.Regex.Split(linea, @"\s+");

那是因为我将任何字符串置于空格之前。如何不这样做,只保留白色字符串。

我知道通过从数组中删除空字符串很容易完成,但我想用正则表达式来完成。

6 个答案:

答案 0 :(得分:6)

为什么不使用String.Split方法?

var myStrings = linea.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

SplitLINQ没有RemoveEmptyEntries选项的另一种方式:

var myStrings = linea.Split().Where(x => x.All(char.IsDigit)).ToArray();

还有一个RegexOption.IgnorePatternWhitespace参数,您可以通过Regex.Split方法删除空格:

var myStrings = Regex.Split(linea, @"\s+", RegexOptions.IgnorePatternWhitespace);

答案 1 :(得分:5)

我建议只使用string.Split

string[] s = yourString.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

请参阅MSDN

答案 2 :(得分:4)

您可以使用StringSplitOptions.RemoveEmptyEntries方法使用String.Split枚举;

  

返回值不包含包含空的数组元素   串

string s = "7       300685  1235    200017  200018  200019";
var array = s.Split(new []{" "}, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in array)
{
    Console.WriteLine(item);
}

输出将是;

7
300685
1235
200017
200018
200019

这里有 demonstration

答案 3 :(得分:2)

为什么这不适合你:

string str = "7       300685  1235    200017  200018  200019";
str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

您还可以使用String.Trim删除一组空白字符的所有前导和尾随匹配项。

答案 4 :(得分:1)

试试这个

  string[] splitvalue = string.Split(str, ' ', StringSplitOptions.RemoveEmptyEntries);

或:

  string[] splitvalue = str.Split(null);

或:

string[] splitvalue = str.Split(new char[0]);

答案 5 :(得分:0)

var list = "Your String".Split(' ').Where(p =>!string.IsNullOrWhiteSpace(p));