所以我有这段代码:
static void Main(string[] args)
{
string name = "John; Jill;";
string[] arrayOfString = new string[6];
arrayOfString = name.Split(';');
for(int i = 0; i < arrayOfString.Length; i++)
{
if (String.IsNullOrEmpty(arrayOfString[i]))
{
arrayOfString[i] = "EMPTY";
}
Console.WriteLine(arrayOfString[i].Trim());
}
}
如果我运行此代码,则结果为:
John
Jill
EMPTY
但是我要做的是将其显示为这样的内容:
John
Jill
EMPTY
EMPTY
EMPTY
EMPTY
正如您所见,我尝试使用length,但是它只计算数组中已经有值的元素。谁能帮助我解决这个问题?预先感谢。
答案 0 :(得分:11)
问题是您要在此处创建一个包含6个元素的数组:
string[] arrayOfString = new string[6];
...但是重新分配arrayOfString
,这意味着您完全忽略了以前的值,在这里:
arrayOfString = name.Split(';');
因此,在此语句之后,arrayOfString
仅包含3个元素,并且原始的6元素数组可以进行垃圾回收。
如果您始终需要6个元素,则应将Split
的结果复制到该现有数组中:
string[] arrayOfString = new string[6];
string[] split = name.Split(';', 6); // At most 6 strings
Array.Copy(split, 0, arrayOfString, 0, split.Length);