【问题标题】:How do I center text in a console application? [duplicate]如何在控制台应用程序中居中文本? [复制]
【发布时间】:2014-03-21 22:49:03
【问题描述】:

我正在创建一个控制台应用程序,我需要使文本居中。有没有一种简单的方法可以做到这一点,或者我必须在文本之前放置空格直到它居中?感谢您的帮助。

例如,使用“|”作为控制台的中心: 你好|世界

【问题讨论】:

  • 不,那个没有准确的中心,不过谢谢
  • 如何发布一些示例文本以及您认为中心应该在哪里?因为 Habib 发布的 SO 答案肯定可以解决问题。
  • @MonkeyLogik 我不知道你对中心的定义是什么,但已经给了你多个答案,他们都把文本放在中间。

标签: c# console


【解决方案1】:
string s = "Hello|World";
Console.SetCursorPosition((Console.WindowWidth - s.Length) / 2, Console.CursorTop);
Console.WriteLine(s);

【讨论】:

  • 多试几次就会发现问题
  • 使用(Console.CursorTop + 1)写入下一行
  • 这是有风险的,在没有保护措施的情况下复制+粘贴,因为此代码可能会导致 System.ArgumentOutOfRangeException 被抛出,具体取决于字符串和控制台宽度。
【解决方案2】:

首先通过将Console.WindowWidth 属性除以2 来获得控制台的中心。然后你可以更进一步更精确;获取字符串的长度并将其除以 2。将这两个数字相加,它将完美居中。

    string textToEnter = "44444444444444444444444444444444444444444444";
    Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (textToEnter.Length / 2)) + "}", textToEnter));
    Console.Read();

如果你对String.Format()的用法不太熟悉,看看这个:

http://www.dotnetperls.com/string-format

【讨论】:

  • 不,那个也不行。输出是这样的:Hello World!在中间!其中'|'是实际的中心
  • @MonkeyLogik 请用您的输出应该如何更新您的问题。你的评论没有告诉我任何东西。
猜你喜欢
  • 2020-12-17
  • 2011-11-25
  • 2014-10-09
  • 1970-01-01
  • 2019-01-30
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
相关资源
最近更新 更多