突出显示文本c#

突出显示文本c#,c#,colors,formatting,C#,Colors,Formatting,我现在有一个掷骰子的程序。掷7个骰子,我的程序检查不同的匹配项,例如一种三个。有没有办法用格式来突出显示三个相同的数字?那么三个相同类型的数字都以红色突出显示 非常感谢 代码: 我认为这在字符串格式中是不可能的,因为这是一个UI的东西。但是,您可以使用控制台的BackgroundColor属性突出显示文本: Console.BackgroundColor = ConsoleColor.Red; Console.Write("\n{0}", d); Console.BackgroundColor

我现在有一个掷骰子的程序。掷7个骰子,我的程序检查不同的匹配项,例如一种三个。有没有办法用格式来突出显示三个相同的数字?那么三个相同类型的数字都以红色突出显示

非常感谢

代码:


我认为这在字符串格式中是不可能的,因为这是一个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));