写一个小的命令行工具,用不同的颜色输出会很好。这可能吗?
当前回答
我开发了一个名为cConsole的有趣的小类库,用于彩色控制台输出。 使用示例:
const string tom = "Tom";
const string jerry = "Jerry";
CConsole.WriteLine($"Hello {tom:red} and {jerry:green}");
它使用c# FormattableString, IFormatProvider和ICustomFormatter接口的一些功能来设置文本切片的前景和背景颜色。 你可以在这里看到cConsole的源代码
其他回答
class Program
{
static void Main()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();
}
}
从这里拍的。
只是补充上面的答案,所有使用控制台。要改变同一行文本的颜色,可以这样写:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
我已经创建了一个小插件(在NuGet上可用),允许您添加任何(如果您的终端支持)颜色到您的控制台输出,而不受经典解决方案的限制。
它通过扩展String对象来工作,语法非常简单:
"colorize me".Pastel("#1E90FF");
前景色和背景色都受支持。
是的。请看这篇文章。这里有一个例子:
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
一种同时给多个单词上色的示例方法。
private static void WriteColor(string str, params (string substring, ConsoleColor color)[] colors)
{
var words = Regex.Split(str, @"( )");
foreach (var word in words)
{
(string substring, ConsoleColor color) cl = colors.FirstOrDefault(x => x.substring.Equals("{" + word + "}"));
if (cl.substring != null)
{
Console.ForegroundColor = cl.color;
Console.Write(cl.substring.Substring(1, cl.substring.Length - 2));
Console.ResetColor();
}
else
{
Console.Write(word);
}
}
}
用法:
WriteColor("This is my message with new color with red", ("{message}", ConsoleColor.Red), ("{with}", ConsoleColor.Blue));
输出:
推荐文章
- 随机字符串生成器返回相同的字符串
- 为什么Func<T,bool>而不是Predicate<T>?
- .NET中的Map和Reduce
- 我如何能使一个组合框不可编辑的。net ?
- .NET反射的成本有多高?
- 实体框架回滚并移除不良迁移
- 我如何获得iOS 7默认的蓝色编程?
- 将流转换为字符串并返回
- 在c#中检查字符串是否只包含数字的最快方法
- IEquatable和重写Object.Equals()之间的区别是什么?
- 创建一个堆栈大小为默认值50倍的线程有什么危险?
- 转换JSON字符串到JSON对象c#
- 显示两个datetime值之间的小时差值
- 如何在一张图中为不同的地块得到不同颜色的线条
- 如何设置enum为空