所以我有一个名为page的字符串数组和一个名为notesSplit的字符串数组,它是使用notes.split()创建的。
notessplit可能有不同数量的换行符,但永远不会超过10行。
我想覆盖" page"的内容。如果索引在notessplit中不存在,则从索引20 - 30留下空白行。
有什么想法吗?
var page = new string[44]; <-- actually this is from a text file
string notes = "blah \n blah \n";
string[] notesSplit = notes.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
我最初想出的是:
for (var i = 0; i < 9; i++)
{
if (notesSplit[i] != null)
{
Page[i + 20] = notesSplit[i];
} else {
Page[i + 20] = System.Environment.NewLine;
}
}
答案 0 :(得分:3)
我很确定这就是你要找的东西。
public string[] Replace(string[] page, string[] notes, int start, int length)
{
for(var i = 0; i + start < page.Length && i < length; i++)
{
if(notes != null && notes.Length > (i))
page[i+start] = notes[i];
else
page[i+start] = Enviroment.NewLine;
}
return page;
}
答案 1 :(得分:2)
另一种选择,而不是循环遍历数组,
是使用Array.Resize
方法和Array.Copy
方法:
// Copied your array definiton:
var page = new string[44];
string notes = "blah \n blah \n";
string[] notesSplit = notes.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
// The suggested solution:
if (notesSplit.Length < 10)
{
Array.Resize(ref notesSplit, 10);
}
Array.Copy(notesSplit, 0, page, 20, 10);
有关Array.Copy
的其他信息,请访问here on MSDN