我有一组用户可以添加或减去的字符串。我需要一种方法来打印列中的字符串,以便每个字符串的第一个字母对齐。但是,我必须在运行时更改列数。虽然默认值为4列,但使用者可以选择1到6之间的任何数字。我不知道如何将未知数量的字符串格式化为未知数量的列。
示例输入: 我们是一个人,所以你可以去一个
四列的示例输出
"词"用2个字母:
它也是我们
哟你去了
"词" 1个字母:
a i o u
t y z c
注意:不要担心在我的代码中解析我已经拥有的单词,如果有帮助我可以添加。
答案 0 :(得分:2)
如果您尝试创建固定宽度列,则可以在创建行时使用string.PadLeft(paddingChar, width)
和string.PadRight(paddingChar, width)
。
http://msdn.microsoft.com/en-us/library/system.string.padleft.aspx
你可以循环你的单词并在每个单词上调用.PadXXXX(宽度)。它会自动用正确的空格数填充你的单词,使你的字符串成为你提供的宽度。
答案 1 :(得分:1)
您可以将总线宽除以列数,并将每个字符串填充到该长度。您可能还想修剪超长字符串。这是一个填充短于列宽的字符串并修剪较长字符串的示例。您可能想要调整更长字符串的行为:
int Columns = 4;
int LineLength = 80;
public void WriteGroup(String[] group)
{
// determine the column width given the number of columns and the line width
int columnWidth = LineLength / Columns;
for (int i = 0; i < group.Length; i++)
{
if (i > 0 && i % Columns == 0)
{ // Finished a complete line; write a new-line to start on the next one
Console.WriteLine();
}
if (group[i].Length > columnWidth)
{ // This word is too long; truncate it to the column width
Console.WriteLine(group[i].Substring(0, columnWidth));
}
else
{ // Write out the word with spaces padding it to fill the column width
Console.Write(group[i].PadRight(columnWidth));
}
}
}
如果您使用此示例代码调用上述方法:
var groupOfWords = new String[] { "alphabet", "alegator", "ant",
"ardvark", "ark", "all", "amp", "ally", "alley" };
WriteGroup(groupOfWords);
然后你应该得到如下所示的输出:
alphabet alegator ant ardvark
ark all amp ally
alley