Rom*_*eyn 5 c# console-application
我的代码的最后一句是Console.WriteLine带有变量的。我希望将变量之间的文本设置""为绿色,将变量设置为红色。
我一直在尝试Console.Foregroundcolor,但这并不成功。
Console.WriteLine("What is your name?");
string name = Console.ReadLine();
Console.WriteLine("Your name is {0}.", name);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
对 currarpickt 的答案略有改进:
public void Write(params object[] oo)
{
foreach(var o in oo)
if(o == null)
Console.ResetColor();
else if(o is ConsoleColor)
Console.ForegroundColor = o as ConsoleColor;
else
Console.Write(o.ToString());
}
Run Code Online (Sandbox Code Playgroud)
现在您可以混合任意数量的文本和颜色:
Write("how about ", ConsoleColor.Red, "red", null, " text or how about ", ConsoleColor.Green, "green", null, " text");
Run Code Online (Sandbox Code Playgroud)
使用 null 会将颜色恢复为默认值
或者我们构建一个解析器怎么样:
public void Write(string msg)
{
string[] ss = msg.Split('{','}');
ConsoleColor c;
foreach(var s in ss)
if(s.StartsWith("/"))
Console.ResetColor();
else if(s.StartsWith("=") && Enum.TryParse(s.Substring(1), out c))
Console.ForegroundColor = c;
else
Console.Write(s);
}
Run Code Online (Sandbox Code Playgroud)
我们可以这样使用:
Write("how about {=Red}this in red{/} or this in {=Green}green{/} eh?");
Run Code Online (Sandbox Code Playgroud)
应该收拾东西。不过,这是一个非常简单、不复杂的解析器,如果您的字符串包含 { 或 },则需要改进它
小智 1
如果你想为控制台上的每个文本设置不同的颜色,你应该在控制台中的每个输入和输出之前编写 Console.BackgrundColor 和 Console.ForeGroundColor 。例如:
Console.BackgroundColor = ConsoleColor.Yellow;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Enter your name:");
string name = Console.ReadLine();
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Hello, " + name);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)