如何将文本与控制台下一行中的文本对齐
本文关键字:文本 一行 对齐 控制台 | 更新日期: 2023-09-27 18:32:06
是否有快捷方式方法可以将控制台中第一行的文本与第二行对齐?
例:
输入你的名字:查尔斯
输入您的学号:20130140
输出应该是这样的:
Name Student Number
Charles 20130140
这是我的代码,但它是一个很长的方法。
class MainClass
{
public static void Main (string[] args)
{
int num, nam;
string snum, name, sec;
int num1, num2, num3;
int var;
int bosh;
Console.WriteLine ("Enter student number: ");
snum = Console.ReadLine ();
Console.WriteLine ("Enter Name: ");
name = Console.ReadLine ();
Console.WriteLine ("Enter Section: ");
sec = Console.ReadLine ();
num1 = snum.Length;
num2 = name.Length;
num3 = sec.Length;
Console.WriteLine (" Student Number Name Section ");
Console.Write("'n");
if (num1 <= 14) {
num = (14 - num1) / 2;
var = (14 - num1) - num;
for (int i = 0; i < num; i++) {
Console.Write (" ");
}
Console.Write (" " + snum);
if (num2 <= 4) {
nam = (4 - num2) / 2;
//sum of all sapaces
bosh = var + nam + 8;
for (int i = 0; i < bosh; i++) {
Console.Write (" ");
}
Console.Write (name);
} else {
nam = ( num2 - 4) / 2;
//sum of all sapaces
bosh = var + (8 - nam);
for (int i = 0; i < bosh; i++) {
Console.Write (" ");
}
Console.Write (name);
}
} else if (num1 > 14){
num = 8 - ((num1 - 14) / 2);
for (int i = 0; i < num; i++) {
Console.Write (" ");
}
Console.Write (snum);
if (num2 <= 4) {
nam = (4 - num2) / 2;
//sum of all sapaces
bosh = nam + num;
for (int i = 0; i < bosh; i++) {
Console.Write (" ");
}
Console.Write (name);
} else {
nam = (num2 - 4) / 2;
//sum of all sapaces
bosh = num - nam;
for (int i = 0; i < bosh; i++) {
Console.Write (" ");
}
Console.Write (name);
}
}
Console.ReadKey ();
}
}
.
NET 中使用的格式字符串接受对齐组件,该组件允许您指定参数的长度及其对齐方式,例如:
Console.WriteLine("{0,5} {1,-10}",5,10);
第一个参数将使用 5 个空格(右对齐),第二个参数将使用 10 个空格(左对齐)。
在你的情况下,你可以写这样的东西:
Console.WriteLine("{0,-25} {1,-15} {2,10}",name,number,section);
这将输出第 1-25 列中左对齐的name
,number
列中的 27-42 左对齐和 44 右对齐的部分为 10 个字符
棘手的部分是,如果格式化字符串的长度大于对齐长度,则忽略对齐方式。您可以通过在最终输出语句之前先格式化每个元素,将它们截断为允许的最大长度来解决此问题。
不幸的是,没有办法将论点居中对齐。您必须计算每个格式化字符串的长度并将其填充在代码中。此 SO 问题的答案使用函数对参数进行居中对齐,或使用自定义 IFormattable 对格式字符串的参数进行居中对齐。