2014-03-03 94 views
-1

我试图分裂一个字符串这样的可变数目:分割字符串用空格

7  300685 1235 200017 200018 200019 

7 
300685 
1235 
200017 
200018 
200019 

字符串数组。

我想出这个正则表达式,但它使空格太:

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

那是因为我的目标是preceeds空格的任何字符串。如何不这样做,只保留不是白色的字符串。

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

+0

为什么在拆分字符串之前不要删除多余的空格? – Amber

+1

为什么使用正则表达式呢?只需在字符串上使用Split方法并删除空条目即可。这比完成正则表达式足够了 - 那么理论上你只需修改()数组中的每个项目 –

+4

这个问题已经被回答了多少次?我不相信你在输入这个问题的标题时没有看到类似问题的列表 – Steve

回答

3

您可以使用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

5

我会建议简单地使用string.Split

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

MSDN

+0

你的第一个参数是不正确的。 –

+0

'Split'是一个实例方法。 –

+0

@ Selman22:我在检查文档时看到了这一点。谢谢。 –

6

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

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

另一种方式与SplitLINQRemoveEmptyEntries选项:

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

也有一个RegexOption.IgnorePatternWhitespace参数,你可以通过你的Regex.Split方法来删除空格:为什么

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

这不适合你:

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

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

+0

'Split'是一个实例方法(非静态)。 –

1

试试这个

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

或:

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

或:

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

'Split'是非静态的(一种实例方法)。 –

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