如题,要一个字符串矩形数组,将原有的锯齿数组行变成矩形数组的列,列变成行,多出来的部分用空字符串占位求教怎么实现

解决方案 »

  1.   

    123
    abcdef
    456asdfg变成1a4
    2b5
    3c6
     da
     es
     fd
      f
      

  2.   


    我现在要在表格里添加这样的网卡信息行,但是有的卡是没有网关和DNS的
    所以信息长度不一样。原信息是IP地址一个数组,其他信息按类各自一个数组,长度不一样。求教怎么整理后,按照图片格式输出,并且把没有网关和DNS的部分设置成空白行
      

  3.   


            public class juzhen {
                double[,] A;
                //m行n列
                int m, n;
                public juzhen(int han, int lie) {
                    m = han;
                    n = lie;
                    A = new double[m, n];
                }
                public int getM {
                    get { return m; }
                }
                public int getN {
                    get { return n; }
                }
                public double[,] Detail {
                    get { return A; }
                    set { A = value; }
                }
            }
            static void Main(string[] args) {
                juzhen yuanlaide = new juzhen(5, 4);
                int m = yuanlaide.getM;//han
                int n = yuanlaide.getN;//lie
                juzhen Mc = new juzhen(n, m);
                double[,] xinde = Mc.Detail;
                double[,] a = yuanlaide.Detail;
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < m; j++) {
                        xinde[i, j] = a[j, i];
                    }
                }
            }这是把行变为列,把列变行了
    空字符补全的话你就判断是行多还是列多
    然后自己处理吧
      

  4.   


    //抛个砖,由于不能复制又重新手打一遍,可能有笔误见谅
    string[][] arr1={new string[][]{"1","2","3"},
                    new string[][]{"a","b","c","d","e","f"},
                    new string[][]{"4","5","6","a","s","d","f","g"}
                    };
    string[][] arr2=new string[][]{};
    int maxNum=0;
    for(int i=0;i<arr1.Length;i++)
    {
        if(maxNum<arr1[i].Length)
        {
            maxNum=arr1[i].Length;
        }
    }
    Array.Resize(ref arr2,maxNum);
    for(int i=0;i<arr.Length;i++)
    {
        arr2[i]=new string[]{};
        Array.Resize(ref arr2[i].Length);
        for(int j=0;j<arr2[i].Length;j++)
        {
            if(j<arr1.Length&&i<arr1[j].Length)
            {
                arr2[i][j]=arr1[j][i];
            }
            else
            {
                arr2[i][j]=string.Empty;
            }
        }
    }
      

  5.   

    更正//抛个砖,由于不能复制又重新手打一遍,可能有笔误见谅
    string[][] arr1={new string[][]{"1","2","3"},
                    new string[][]{"a","b","c","d","e","f"},
                    new string[][]{"4","5","6","a","s","d","f","g"}
                    };
    string[][] arr2=new string[][]{};
    int maxNum=0;
    for(int i=0;i<arr1.Length;i++)
    {
        if(maxNum<arr1[i].Length)
        {
            maxNum=arr1[i].Length;
        }
    }
    Array.Resize(ref arr2,maxNum);
    for(int i=0;i<arr2.Length;i++)
    {
        arr2[i]=new string[]{};
        Array.Resize(ref arr2[i],arr1.Length);
        for(int j=0;j<arr2[i].Length;j++)
        {
            if(j<arr1.Length&&i<arr1[j].Length)
            {
                arr2[i][j]=arr1[j][i];
            }
            else
            {
                arr2[i][j]=string.Empty;
            }
        }
    }
      

  6.   

    我觉得,把一行定义为struct,然后用一维数组来保存,这样维护处理起来更方便点吧。
    如:public struct NetCar
    {
    public string Name;
    public string IpAddress;
    public string SubnetMask;
    public string DefaultGateway;
    public string DNS;
    public string MacAddress;
    }List<NetCart> netCarList=new List<NetCart>();
    ..........
      

  7.   

    Collection的操作,舍linq其谁? string[] array = new string[] { "123", "abcdef","456asdfg"};
    string[] newArray = Enumerable.Range(0, array.Max(o => o.Length)).Select((frow, i) => array.Select(row => row.Length > i ? row.ElementAt(i) : ' ').ToArray()).Select(o => new string(o)).ToArray();