C# 控制台颜色:同一行中超过1个?
使用: 以及:C# 控制台颜色:同一行中超过1个?,c#,console,C#,Console,使用: 以及: ColoredConsoleWrite(ConsoleColor.Blue,$“我最喜欢的水果:苹果”) 有没有一种方法可以将苹果显示为红色,同时保留我最喜欢的水果:蓝色?是的,可以在同一行上用不同的颜色书写文本。但是你必须为每种不同的颜色改变前景色。也就是说,如果你想用蓝色写“我最喜欢的水果:”和用红色写“苹果”,那么你必须做两个write操作: public static void ColoredConsoleWrite(ConsoleColor color, string
ColoredConsoleWrite(ConsoleColor.Blue,$“我最喜欢的水果:苹果”)代码>
有没有一种方法可以将苹果显示为红色,同时保留我最喜欢的水果:蓝色?是的,可以在同一行上用不同的颜色书写文本。但是你必须为每种不同的颜色改变前景色。也就是说,如果你想用蓝色写“我最喜欢的水果:”和用红色写“苹果”,那么你必须做两个write
操作:
public static void ColoredConsoleWrite(ConsoleColor color, string text)
{
ConsoleColor originalColor = Console.ForegroundColor;
Console.ForegroundColor = color;
Console.Write(text);
Console.ForegroundColor = originalColor;
}
如果您想通过一个调用实现这一点,那么您需要某种方法在字符串中定义它。NET Framework不提供这样的功能。建造这样的东西是可能的。它将涉及编写一个与所使用的类似的字符串解析器,其中定义占位符,并为其提供值作为参数
也许一种更简单的方法是编写一个方法,该方法获取颜色和字符串对的列表,例如:
var originalColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("My farorite fruit: ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("Apple");
Console.ForegroundColor = originalColor;
public class ColoredString
{
public ConsoleColor Color;
public String Text;
public ColoredString(ConsoleColor color, string text)
{
Color = color;
Text = text;
}
}
public static void WriteConsoleColor(params ColoredString[] strings)
{
var originalColor = Console.ForegroundColor;
foreach (var str in strings)
{
Console.ForegroundColor = str.Color;
Console.Write(str.Text);
}
Console.ForegroundColor = originalColor;
}
public void DoIt()
{
WriteConsoleColor(
new ColoredString(ConsoleColor.Blue, "My favorite fruit: "),
new ColoredString(ConsoleColor.Red, "Apple")
);
}