如何使用console.writeline显示不同颜色的格式化输出

3

是否可以以不同颜色显示格式化输出:

console.WriteLine(“First {0} second{1} ”,  firstString, secondString)

我想在输出时显示变化,比如用一种颜色显示firstString,另一种颜色显示secondString

根据答案看起来似乎是不可能的。 - MichaelMao
5个回答

5

如果你想在一行代码中使用不同的颜色,应该使用Console.Write()方法,像这样写:

Console.ForegroundColor = ConsoleColor.White;
Console.Write("First  ");
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("{0} ", firstString);
Console.ForegroundColor = ConsoleColor.White;
Console.Write("second ");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("{0} ", secondString);

1
你需要多次调用Console.Write()方法并设置控制台的颜色,如下所示:
class Program {
    static void Main( string[] args ) {
      PrintColoredString( "First", "firstString", ConsoleColor.Green );
      PrintColoredString( "second", "secondString", ConsoleColor.Cyan );
      Console.ResetColor();
      Console.ReadKey();
    }

    private static void PrintColoredString(string key, string value, ConsoleColor color) {
      Console.ForegroundColor = color;
      Console.Write( "{0} {1} ", key, value );
    }
  }

1

我已经创建了一个小插件(可在NuGet上获得),它允许您轻松地将字符串包装在ANSI颜色代码中。

enter image description here

它通过扩展String对象来实现,语法如下:
"color me".Pastel("#1E90FF");

之后,它就可以被任何 Console.Write* 方法使用。

我是这个库的创建者。


我发现这个非常有趣,但是有一个缺点...终端环境必须支持处理ANSI序列;如果我不能保证这一点,我应该坚持改变控制台的背景和前景颜色属性。至少,我学到了一些东西... - Matze
@Matze 谢谢您的回复。到目前为止,您已经尝试过哪些控制台?我已经在一些较旧的Windows控制台上进行了测试,如果无法产生精确的颜色,则会进行近似处理,我认为这是一个公平的备选方案。 - silkfire

0

可以使用 Console.ForegroundColorConsole.BackgroundColor 来实现,但需要将 Console.WriteLine 调用拆分为多个 Console.Write 调用,以避免在组件之间出现换行符。

请注意线程安全性,确保不会在输出不同颜色的行时出现重叠 - 这可能会让你非常不舒服。


0

你可以使用

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;

请参见C#控制台颜色

据我所知,在同一行中不可能使用多种颜色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接