【问题标题】:Using linux(ansi/vt100) color codes in C#在 C# 中使用 linux(ansi/vt100) 颜色代码
【发布时间】:2016-08-03 00:07:42
【问题描述】:

我想在我的 C# 输出中使用 ANSI/VT100(在 Linux/Mono PC 上)。但是

string colorme = @"\e[31mHello World\e[0m";
Console.WriteLine(colorme);

只在 bash 中产生纯文本输出(我使用的是单声道)。是否可以在单声道的 C# consolw 程序中使用 \e[31m 之类的颜色代码?

【问题讨论】:

  • 据我所知,窗口的命令行中没有颜色代码。不过,我可能是错的。您可以更改终端的颜色,但不能通过颜色代码。这可能有用:stackoverflow.com/questions/2048509/…
  • 你的意思是ansi还是vt100?不是同一件事,这就是诅咒开始的地方。请改用 Console.ForegroundColor 和 BackgroundColor 属性。
  • 不,我的意思是我在 Linux pc (ubuntu) 上的 Mono 中尝试这个例子。但它不起作用。在控制台中输入它可以正常工作。

标签: c# colors mono console vt100


【解决方案1】:

Console.ForegroundColorConsole.BackgroundColor 不适用于单声道和我的控制台,所以我不得不使用 ANSI 着色。

主要问题是 C# 不知道如何解释 \e 转义码。由于\e实际上代表\x1B,我们可以使用unicode转义码。

string colorme = "\x1b[31mHello World\x1b[0m";
Console.WriteLine(colorme);

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2015-01-10
    • 2021-07-23
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多