我有如下的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并且让我知道,我们将不胜感激。谢谢,
答案 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();