Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拆分包含各种空格的字符串_C#_Arrays_Split - Fatal编程技术网

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

C# 拆分包含各种空格的字符串,c#,arrays,split,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

我有如下的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
我的目标是为每一列创建一系列数组。即 节点[]={0,1,2,3),轴[]={0.00,-83.19,-56.91,-42.09}

我知道如何读取txt文件并将字符串转换为双数组。但问题是这些值不是由制表符分隔的,而是由不同的空格数分隔的。我通过谷歌搜索找到了一种方法。但是,我找不到任何方法。一些人讨论了一种使用常量空格的方法。如果你知道如何分隔,或者这个问题有现成的Q&a请告诉我,我们将不胜感激。谢谢,

使用此选项将连续分隔符视为一个:

string[] parts = source.Split(' ',StringSplitOptions.RemoveEmptyEntries);
然后从那里解析:

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

StringSplitOptions.RemoveEmptyEntires
应该可以实现以下功能:

var items = source.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries);
返回值不包括包含空字符串的数组元素


另一种方法是使用正则表达式,尽管我建议您使用
removemptyEntries
坚持使用其他答案,但在这种情况下,这是一种过度使用:

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

您不能按位置阅读它们吗?可能应该使用
环境。换行符
而不是弄乱CRLF。@McAdan不,文本可以在一个环境中准备,在另一个环境中解析。它在编写时很好,而不是在编写时reading@McAden*禁止使用单个字符(
\n
)。我知道,我只是指出您的代码使用的是
\n\r
,我认为这并不常见。最终这取决于OP从何处提取数据。您的代码是最正确的,否则我+1。@McAden我不认为您真的完全理解此代码。它创建了一个数组(
“\n\r.tocharray()
),顺序不重要。与
“\r\n”相同。ToCharray()
谢谢您的帮助,
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();