Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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#_Windows - Fatal编程技术网

C# 将字符串数组转换为多维双精度数组

C# 将字符串数组转换为多维双精度数组,c#,windows,C#,Windows,我需要将文件中的矩阵读取到double[,]。到目前为止,可以将文件读取为字符串[]。数据结构如下所示: 但是这种转换不起作用 我已经尝试了很多stackoverflow文章,但总是失败,因为“输入字符串的格式不正确”。重要的是,这些值都是双值,用三个空格分隔 我是这样读文件的: var text = File.ReadAllLines(@"right.txt"); 您可以用几种方法来实现这一点,这取决于您想要的是交错数组还是多维数组 也许有更简洁的方法可以做到这一点,但是,你可以看到这个想

我需要将文件中的矩阵读取到double[,]。到目前为止,可以将文件读取为字符串[]。数据结构如下所示:

但是这种转换不起作用

我已经尝试了很多stackoverflow文章,但总是失败,因为“输入字符串的格式不正确”。重要的是,这些值都是双值,用三个空格分隔

我是这样读文件的:

var text = File.ReadAllLines(@"right.txt");

您可以用几种方法来实现这一点,这取决于您想要的是交错数组还是多维数组

也许有更简洁的方法可以做到这一点,但是,你可以看到这个想法

锯齿状

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];
但是请注意,这实际上是假设每个分隔的值都可以转换为
双精度
,并且没有空行(即使在文件末尾)

可以通过使用LINQ语句

中包含的类似的方法来解决空白行问题。
File.ReadAllLines(@"right.txt")
    .Where(x => !string.IsNullOrWhiteSpace(x))
    ...

你是怎么转换的?你的密码在哪里?您应该在每个代表性字符串上使用
double.Parse()
。如果你不发布你的代码,我们不知道为什么它不工作。我们再重复一遍你在文章中读到的内容是没有意义的。多维方法似乎很好,但对我不起作用。我在LINQ语句中得到一个异常
System.FormatException:“输入字符串的格式不正确。”
是否有方法调试/修复此问题?也许问题在于,双值是用3个空格分隔的,而不是仅用1个空格?有没有办法在LINQ语句中解决这个问题?谢谢,但是
。其中(x=>!string.IsNullOrWhiteSpace(x))
不起作用。我通过了调试器,字符串中仍然存在多个空格。@Sabina该行处理空行拆分选项处理多个空格。你确定它们是空格而不是制表符之类的吗?\n你可以通过
Split(new[]{',\t'},StringSplitOptions.removeMptyEntries)来确定。
也让我们不要再猜测了,你可以把你的示例数据放到问题上,或者链接到在线文件,因为这可能会持续一整天
File.ReadAllLines(@"right.txt")
    .Where(x => !string.IsNullOrWhiteSpace(x))
    ...