我想问一下,如何更改我想要的特定颜色的字符串中特定字母的颜色。
例如:
string letters = "Hello World"; //The string inputted.
我想改变" o"在"你好"变红了。我怎么做?我知道
Console.Foreground = ConsoleColor.Red;
会将整个字符串更改为红色。更改具有特定颜色的特定字母的最佳代码是什么?提前谢谢!
答案 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#行中为字符单独上色的方法。