突出显示文本c#
我现在有一个掷骰子的程序。掷7个骰子,我的程序检查不同的匹配项,例如一种三个。有没有办法用格式来突出显示三个相同的数字?那么三个相同类型的数字都以红色突出显示 非常感谢 代码:突出显示文本c#,c#,colors,formatting,C#,Colors,Formatting,我现在有一个掷骰子的程序。掷7个骰子,我的程序检查不同的匹配项,例如一种三个。有没有办法用格式来突出显示三个相同的数字?那么三个相同类型的数字都以红色突出显示 非常感谢 代码: 我认为这在字符串格式中是不可能的,因为这是一个UI的东西。但是,您可以使用控制台的BackgroundColor属性突出显示文本: Console.BackgroundColor = ConsoleColor.Red; Console.Write("\n{0}", d); Console.BackgroundColor
我认为这在字符串格式中是不可能的,因为这是一个UI的东西。但是,您可以使用控制台的
BackgroundColor
属性突出显示文本:
Console.BackgroundColor = ConsoleColor.Red;
Console.Write("\n{0}", d);
Console.BackgroundColor = ConsoleColor.Black;
Console.WriteLine(" Appeared three times --- 3 Points Awarded\n");
当然,您可以自己编写一个函数,以类似以下字符串格式的方式执行此操作:
public static void WriteColoredLine(string formattedString, params object[] pars)
{
var pattern = "[{]\\d[}]";
var splitted = Regex.Split(formattedString, pattern);
var formatItems = Regex.Matches(formattedString, pattern).Cast<Match>().Select(m => int.Parse(m.Value.Trim('{', '}'))).ToList();
for (var i = 0; i < splitted.Length - 1; i++)
{
Console.Write(splitted[i]);
Console.BackgroundColor = ConsoleColor.Red;
Console.Write(pars[formatItems[i]]);
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine(splitted.Last());
}
您需要定义颜色,然后写入当前行。看见
public static void WriteColoredLine(string formattedString, params object[] pars)
{
var pattern = "[{]\\d[}]";
var splitted = Regex.Split(formattedString, pattern);
var formatItems = Regex.Matches(formattedString, pattern).Cast<Match>().Select(m => int.Parse(m.Value.Trim('{', '}'))).ToList();
for (var i = 0; i < splitted.Length - 1; i++)
{
Console.Write(splitted[i]);
Console.BackgroundColor = ConsoleColor.Red;
Console.Write(pars[formatItems[i]]);
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine(splitted.Last());
}
public static void WriteColoredLine(string formattedString, params (object, ConsoleColor)[] pars)
{
var pattern = "[{]\\d[}]";
var splitted = Regex.Split(formattedString, pattern);
var formatItems = Regex.Matches(formattedString, pattern).Cast<Match>().Select(m => int.Parse(m.Value.Trim('{', '}'))).ToList();
for (var i = 0; i < splitted.Length - 1; i++)
{
Console.Write(splitted[i]);
Console.BackgroundColor = pars[formatItems[i]].Item2;
Console.Write(pars[formatItems[i]].Item1);
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine(splitted.Last());
}
WriteColoredLine("\n{0} Appeared three times --- 3 Points Awarded\n", ("foo", ConsoleColor.Red));