如何将锯齿状数组转换为2D数组?

 看是语言_263 发布于 2023-02-10 10:15

我有一个file.txt包含以下内容的文件:

6,73,6,71 
32,1,0,12 
3,11,1,134 
43,15,43,6 
55,0,4,12 

这段代码可以读取并将其提供给锯齿状数组:

    string[][] arr = new string[5][];
    string[] filelines = File.ReadAllLines("file.txt");
    for (int i = 0; i < filelines.Length; i++) 
    {
        arr[i] = filelines[i].Split(',').ToArray();
    }

我将如何做同样的事情,但使用2D阵列?

1 个回答
  • 假设您在开始阅读文件之前知道 2D数组的尺寸(或至少是最大尺寸),您可以执行以下操作:

    string[,] arr = new string[5,4];
    string[] filelines = File.ReadAllLines("file.txt");
    for (int i = 0; i < filelines.Length; i++) 
    {
        var parts = filelines[i].Split(',');    // Note: no need for .ToArray()
        for (int j = 0; j < parts.Length; j++) 
        {
            arr[i, j] = parts[j];
        }
    }
    

    如果你不知道的尺寸,或者整数每行的数量可能会有所不同,当前的代码将工作,你可以使用一个小的LINQ到数组转换你在阅读后一切:

    string[] filelines = File.ReadAllLines("file.txt");
    string[][] arr = new string[filelines.Length][];
    for (int i = 0; i < filelines.Length; i++) 
    {
        arr[i] = filelines[i].Split(',');       // Note: no need for .ToArray()
    }
    
    // now convert
    string[,] arr2 = new string[arr.Length, arr.Max(x => x.Length)];
    for(var i = 0; i < arr.Length; i++)
    {
        for(var j = 0; j < arr[i].Length; j++)
        {
            arr2[i, j] = arr[i][j];
        }
    }
    

    2023-02-10 10:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有