突出显示文字c#

时间:2017-04-30 02:41:39

标签: c# colors formatting

我目前有一个骰子滚动游戏的程序。 7掷骰子,我的程序检查不同的匹配,例如三种。有没有办法突出显示使用格式的三种数字?那么三种类型的数字都以红色突出显示?

备受赞赏

代码:

System.out.println("Answer: " + ack(m,n));

1 个答案:

答案 0 :(得分:1)

我不认为这可以通过字符串格式化,因为它是一个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, 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());
}

如果您没有定位最新的.Net版本,请记得从NuGet安装ValueTuple类型。

这个方法被称为:

WriteColoredLine("\n{0} Appeared three times --- 3 Points Awarded\n", ("foo", ConsoleColor.Red));