You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TUI程序的控制台中实现多行文本居中显示?

解决TUI程序多行文本居中问题

你的单行居中逻辑没问题,但多行文本包含换行符时,用整个字符串的长度计算光标位置会出错——因为每一行的实际长度各不相同。要实现多行居中,必须逐行处理:

  1. 将多行字符串按换行符拆分成独立行
  2. 对每一行单独计算居中的光标横坐标
  3. 逐行设置光标位置并输出

示例代码:

string multiLineText = "Hello World!\nHey this is another line!";
// 拆分所有行(兼容\n换行符)
string[] lines = multiLineText.Split(new[] { '\n' }, StringSplitOptions.None);

int currentRow = Console.CursorTop;
foreach (string line in lines)
{
    // 计算当前行的居中横坐标
    int left = (Console.WindowWidth - line.Length) / 2;
    // 避免窗口过窄时出现负坐标
    left = Math.Max(left, 0);
    Console.SetCursorPosition(left, currentRow);
    Console.WriteLine(line);
    currentRow++;
}

补充优化

  • 如果需要兼容Windows的\r\n换行符,把拆分逻辑改成Split(new[] { "\r\n", "\n" }, StringSplitOptions.None)
  • 若要支持动态窗口大小,可以监听Console.WindowResize事件,在窗口变化时重新渲染文本

内容的提问来源于stack exchange,提问作者Itsmemonzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:07:35