如何在C#Console中更改字符串中每个字母的前景颜色?

时间:2012-06-22 04:46:48

标签: c# console

我想问一下,如何更改我想要的特定颜色的字符串中特定字母的颜色。

例如:

string letters = "Hello World";  //The string inputted.

我想改变" o"在"你好"变红了。我怎么做?我知道

Console.Foreground = ConsoleColor.Red;

会将整个字符串更改为红色。更改具有特定颜色的特定字母的最佳代码是什么?提前谢谢!

3 个答案:

答案 0 :(得分:8)

最直接的解决方案是

var o = letters.IndexOf('o');
Console.Write(letters.Substring(0, o));
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(letters[o]);
Console.ResetColor();
Console.WriteLine(letters.Substring(o + 1));

您还可以将其概括为适用于您想要着色的任意字符串或字母的函数:

void WriteLineWithColoredLetter(string letters, char c) {
  var o = letters.IndexOf(c);
  Console.Write(letters.Substring(0, o));
  Console.ForegroundColor = ConsoleColor.Red;
  Console.Write(letters[o]);
  Console.ResetColor();
  Console.WriteLine(letters.Substring(o + 1));
}

另一种选择可能是使用类似"Hell&o World"的字符串并解析&表示以红色打印以下字母的位置。

答案 1 :(得分:1)

string letters = "Hello World";
Char[] array = letters.ToCharArray();

foreach (Char c in array)
{
    if (c == 'o')
    {
        Console.ForegroundColor = System.ConsoleColor.Red;
        Console.Write(c);
    }
    else
    {
        Console.ForegroundColor = System.ConsoleColor.White;
        Console.Write(c);
    }
}
Console.WriteLine();
Console.Read();

答案 2 :(得分:0)

我知道我参加晚会很晚,但是我找到了一种对原始海报很好的解决方案。

我将举一个使用彩虹显示的示例,该显示可以单独适应文本中所需的独特字母和颜色:

Console.ForegroundColor = ConsoleColor.Red; Console.Write("H");
Console.ForegroundColor = ConsoleColor.DarkYellow; Console.Write("e")
Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("l");
Console.ForegroundColor = ConsoleColor.Green; Console.Write("l");
Console.ForegroundColor = ConsoleColor.Blue; Console.Write("o ");
Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.Write("W");
Console.ForegroundColor = ConsoleColor.Magenta; Console.Write("o");
Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("r");
Console.ForegroundColor = ConsoleColor.White; Console.Write("l");
Console.ForegroundColor = ConsoleColor.DarkYellow; Console.Write("d.\n\n");
Console.ResetColor();

希望这可以帮助其他人找到在C#行中为字符单独上色的方法。