[英]Converting string array to multidimensional double
您可以通过多种方式执行此操作,这取决于您是否需要锯齿状数组或多维数组。
可能有更简洁的方法,但是,您可以看到这个想法。
锯齿状
var jaggedArray = File.ReadAllLines(@"d:\right.txt")
.Where(x => !string.IsNullOrWhiteSpace(x))
.Select(x => x.Split(new[]{' '},StringSplitOptions.RemoveEmptyEntries)
.Select(double.Parse)
.ToArray())
.ToArray();
多维的
var lines = File.ReadAllLines(@"d:\right.txt")
.Where(x => !string.IsNullOrWhiteSpace(x))
.Select(x => x.Split(new[]{' '},StringSplitOptions.RemoveEmptyEntries)
.Select(double.Parse)
.ToList())
.ToList();
var h = lines.Count();
var w = lines.Max(x => x.Count);
var multiArray = new double[h, w];
for (var i = 0; i < lines.Count; i++)
for (var j = 0; j < lines[i].Count; j++)
multiArray[i, j] = lines[i][j];
注意 :完全未经测试,对于此代码对人们造成的伤害或其他伤害,我不承担任何责任
注意2 :没有错误检查或容错功能,如果文件中有垃圾,这很可能会抛出
更新资料
有没有办法调试/修复该问题? 可能是双精度值用3个空格而不是仅1个空格分隔的问题? 有没有办法在LINQ语句中解决此问题?
是,如果使用StringSplitOptions.RemoveEmptyEntries
可以使用多个空格,则可以
Split(new [] {' '},StringSplitOptions.RemoveEmptyEntries)
但是请注意,这实际上是假设每个分隔的值都可以转换为double
,并且没有空行(即使在文件末尾)
您可以使用linq语句中包含的类似内容来解决空白行问题
File.ReadAllLines(@"right.txt")
.Where(x => !string.IsNullOrWhiteSpace(x))
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.