Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在控制台中为不同颜色的单词着色。控制台应用程序中的WriteLine?_C# - Fatal编程技术网

C# 如何在控制台中为不同颜色的单词着色。控制台应用程序中的WriteLine?

C# 如何在控制台中为不同颜色的单词着色。控制台应用程序中的WriteLine?,c#,C#,我的代码的最后一句是一个控制台。WriteLine带有一个变量。我希望“之间的文本为绿色,变量为红色 我一直在尝试使用Console.Foregroundcolor,但没有成功 Console.WriteLine("What is your name?"); string name = Console.ReadLine(); Console.WriteLine("Your name is {0}.", name); Console.ReadKey(); 不能在一个控制台中使用不同的颜色。Wri

我的代码的最后一句是一个
控制台。WriteLine
带有一个变量。我希望
之间的文本为绿色,变量为红色

我一直在尝试使用
Console.Foregroundcolor
,但没有成功

Console.WriteLine("What is your name?");
string name = Console.ReadLine();
Console.WriteLine("Your name is {0}.", name);
Console.ReadKey();

不能在一个
控制台中使用不同的颜色。WriteLine()
-请改用
控制台。Write()

Console.WriteLine("What is your name?");
string name = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("Your name is ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("name");
Console.WriteLine(); //linebreak
Console.ResetColor(); //reset to default values

不能在一个
控制台中使用不同的颜色。WriteLine()
-请改用
控制台。Write()

Console.WriteLine("What is your name?");
string name = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("Your name is ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("name");
Console.WriteLine(); //linebreak
Console.ResetColor(); //reset to default values

如果您想对控制台上的每个文本使用不同的颜色,您应该在控制台中的每个输入和输出之前编写console.backgroundColor和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();

如果您想对控制台上的每个文本使用不同的颜色,您应该在控制台中的每个输入和输出之前编写console.backgroundColor和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();

您可以为此创建一个方法:

public void ColoredConsoleWrite(ConsoleColor firstColor, string firstText, ConsoleColor secondColor, string secondText)
{
    Console.ForegroundColor = firstColor;
    Console.Write(firstText);
    Console.ForegroundColor = secondColor;
    Console.WriteLine(secondText);
}
以后再这样称呼它:

ColoredConsoleWrite(ConsoleColor.Green, "Your name is ", ConsoleColor.Red, name);

您可以为此创建一个方法:

public void ColoredConsoleWrite(ConsoleColor firstColor, string firstText, ConsoleColor secondColor, string secondText)
{
    Console.ForegroundColor = firstColor;
    Console.Write(firstText);
    Console.ForegroundColor = secondColor;
    Console.WriteLine(secondText);
}
以后再这样称呼它:

ColoredConsoleWrite(ConsoleColor.Green, "Your name is ", ConsoleColor.Red, name);

对Currapickt的回答稍加改进:

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());
}
现在,您可以混合任意数量的文字和颜色:

 Write("how about ", ConsoleColor.Red, "red", null, " text or how about ", ConsoleColor.Green, "green", null, " text");
使用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);
}
我们可以使用如下方法:

Write("how about {=Red}this in red{/} or this in {=Green}green{/} eh?");

我们应该收拾一下。这是一个非常简单、不复杂的解析器,如果字符串中包含{或},则需要对其进行改进,例如

对CurraPickt的答案稍加改进:

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());
}
现在,您可以混合任意数量的文字和颜色:

 Write("how about ", ConsoleColor.Red, "red", null, " text or how about ", ConsoleColor.Green, "green", null, " text");
使用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);
}
我们可以使用如下方法:

Write("how about {=Red}this in red{/} or this in {=Green}green{/} eh?");
我们应该收拾一下。不过,它是一个非常简单、不复杂的解析器,例如,如果字符串包含{或},则需要对其进行改进