如何将文本与控制台下一行中的文本对齐

本文关键字:文本 一行 对齐 控制台 | 更新日期: 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 列中左对齐的namenumber 列中的 27-42 左对齐和 44 右对齐的部分为 10 个字符

棘手的部分是,如果格式化字符串的长度大于对齐长度,则忽略对齐方式。您可以通过在最终输出语句之前先格式化每个元素,将它们截断为允许的最大长度来解决此问题。

不幸的是,没有办法将论点居对齐。您必须计算每个格式化字符串的长度并将其填充在代码中。此 SO 问题的答案使用函数对参数进行居中对齐,或使用自定义 IFormattable 对格式字符串的参数进行居中对齐。