繁体   English   中英

如何在C#中填充数组?

[英]How to pad an array in C#?

我正在准备一个代码,将一个字符串拆分为字符数组,然后根据某个模式对每个数组进行混洗。

我已经使用一些代码根据“keysize”将数组拆分到不同的char数组,并且它工作正常,除了可能缺少某些元素的最后一个数组。

如果最后一个数组比其他数组短,则会抛出异常,因为在某些时候交换函数可能试图将[0]与不存在的[x]交换。

那么如何将最后一个数组填充为相同的大小?

这是我在这里的一个问题中找到的分裂代码,我在其中编辑了使用char而不是int

public static char[][] Split(char[] source, int keysize)
    {
        int fullArrayCount = source.Length / keysize;
        int totalArrayCount = fullArrayCount;
        int remainder = source.Length - (fullArrayCount * keysize);
        if (remainder > 0)
        {
            totalArrayCount++;
        }
        char[][] output = new char[totalArrayCount][];
        for (int i = 0; i < fullArrayCount; i++)
        {
            output[i] = new char[keysize];
            Array.Copy(source, i * keysize, output[i], 0, keysize); // Array.Copy(Original Array,,Target array,"Where to start"0,Howmuch)
        }
        if (totalArrayCount != fullArrayCount)
        {

            output[fullArrayCount] = new char[remainder];
           // output[fullArrayCount] = new char[keysize];
            MessageBox.Show((keysize-remainder).ToString());
            Array.Copy(source, fullArrayCount * keysize,output[fullArrayCount], 0, remainder);

        }
        return output;
    }

你能不能而不是:

output[fullArrayCount] = new char[remainder];

写:

output[fullArrayCount] = new char[keysize];

将一组字符拆分为指定长度的字符数组的集合,用管道符号填充,可以轻松替换/删除/搜索。 (它不喜欢空炭)

public static List<char[]> Split(char[] source, int keysize)
{
    List<char[]> list = new List<char[]>();

    for (int i = 0; i < source.Length; i+= keysize)
    {
        List<char> c = source.Skip(i).Take(keysize).ToList();
        while (c.Count < keysize)
        {
            c.Add('|');
        }
        list.Add(c.ToArray());
    }
    return list;
}

static void Main(string[] args)
{

    var x = Split("abcdefgh".ToCharArray(), 3);

    Console.ReadLine();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM