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

Iva*_*Rey 3 c# console

我想询问是否如何更改具有我想要的特定颜色的字符串中特定字母的颜色.

例如:

string letters = "Hello World";  //The string inputted.
Run Code Online (Sandbox Code Playgroud)

我想将"你好"中的"o"改为红色.我怎么做?我知道

Console.Foreground = ConsoleColor.Red;
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*oey 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));
Run Code Online (Sandbox Code Playgroud)

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

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));
}
Run Code Online (Sandbox Code Playgroud)

另一种选择可能是使用类似的字符串"Hell&o World"并解析其中的&方法以红色打印以下字母.

  • `Console.ResetColor()`可以用来重置颜色. (2认同)