簡體   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