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