[英]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.