拆分包含各种空格的字符串

时间:2014-01-31 18:27:17

标签: c# arrays split

我有如下的txt文件,并希望将它们拆分为双数组

node Strain    Axis  Strain  F      P/S   Sum    Cur     Moment
0   0.00000    0.00  0.0000     0     0     0     0      0.00
1   0.00041  -83.19  0.0002  2328   352     0     0     -0.80
2   0.00045  -56.91  0.0002  2329   352     0     0      1.45
3   0.00050  -42.09  0.0002  2327   353     0     0     -0.30

我的目标是为每列提供一系列数组。即      node [] = {0,1,2,3),Axis [] = {0.00,-83.19,-56.91,-42.09},....

我知道如何读取txt文件并将字符串转换为双数组。但问题是值不是由制表符分隔,而是由不同数量的空格分隔。我用Google搜索找到了解决方法。但是,我找不到任何东西。一些人讨论了一种恒定空间的方法。如果您知道该怎么做,或者对于这个问题有现有的Q& A并且让我知道,我们将不胜感激。谢谢,

4 个答案:

答案 0 :(得分:3)

另一种方式,虽然我建议你坚持使用RemoveEmptyEntries这里的其他答案将是使用正则表达式,但在这种情况下它是矫枉过正的:

string[] elements = Regex.Split(s, @"\s+");

答案 1 :(得分:2)

StringSplitOptions.RemoveEmptyEntires应该这样做:

var items = source.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries);
  

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

答案 2 :(得分:2)

var doubles = text.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
              .Skip(1)
              .Select(line => line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries)
                                  .Select(x => double.Parse(x)).ToArray())
              .ToArray();

答案 3 :(得分:1)

使用选项StringSplitOptions.RemoveEmptyEntries将连续分隔符视为一个:

string[] parts = source.Split(' ',StringSplitOptions.RemoveEmptyEntries);

然后从那里解析:

double[] values = parts.Select(s => double.Parse(s)).ToArray();