我有一个字典对象IDictionary<string, string>,它只有以下项目:Item1,Items2和Item3.每个项目的最大长度为50个字符.
然后我有一个单词列表List<string>.我需要一个循环来遍历单词并将它们添加到从Item1开始的字典中,但在将它添加到字典之前需要检查长度.如果新项目和当前项目的长度加在一起大于50个字符,则该单词需要向下移动到下一行(在本例中为Item2).
做这个的最好方式是什么?
我不确定为什么这个问题被投票如此之多,但也许原因是你已经有了一个非常清晰的算法,所以获得C#代码应该是微不足道的.就目前而言,无论是你真的缺乏经验还是非常懒惰.我要承担前者.
无论如何,让我们来看看要求.
1)"然后我有一个单词列表列表." 你已经以某种形式拥有这条线.
List<string> words = GetListOfWords();
Run Code Online (Sandbox Code Playgroud)
2)"通过单词并将它们添加到从Item1开始的字典" - 如果你想要一系列字符串,我建议使用List而不是字典.此外,您需要一个临时变量来存储当前行的内容,因为您确实是在一次添加完整行之后.
var lines = new List<string>();
string currentLine = "";
Run Code Online (Sandbox Code Playgroud)
3)"我需要一个循环,将通过单词"
foreach(var word in words) {
Run Code Online (Sandbox Code Playgroud)
4)"如果新项目和当前项目的长度加在一起大于50个字符" - 空格+1.
if (currentLine.Length + word.Length + 1 > 50) {
Run Code Online (Sandbox Code Playgroud)
5)"那么这个词需要向下移动到下一行"
lines.Add(currentLine);
currentLine = word;
}
Run Code Online (Sandbox Code Playgroud)
6)"通过单词并将它们添加到从Item1开始的字典" - 你没有非常清楚地说出这一点.你的意思是你想把每个单词加到最后一行,除非它会使这行超过50个字符.
else {
currentLine += " " + word;
}
}
lines.Add(currentLine); // the last unfinished line
Run Code Online (Sandbox Code Playgroud)
然后你去
如果你绝对需要它作为3行的IDictionary,那就行了
var dict = new Dictionary<string,string>();
for(int lineNum = 0; lineNum < 3; lineNum ++)
dict["Address"+lineNum] = lineNume < lines.Length ? lines[lineNum] : "";
Run Code Online (Sandbox Code Playgroud)