我们在开发过程中,经常需要将信息用不同的颜色标记出来,这可以让我们快速关注到重点信息。想必大家都知道,可以通过Console. ForegroundColor设置输出文字的颜色,背景颜色可以通过Console. BackgroundColor去改变。但实际使用起来却非常繁琐。每输出一段文字就得改变一次颜色,否则整版都是一个色,不能突出重点。

  最近发现一个叫Shotgun.ColorConsole的库类,可以避免这种糟糕的情况 。ColorConsole使用颜色标记的方式去控制Console的颜色输出,从而避免了像原生的Console一样反复修改颜色属性。例如:

Shotgun.ColorConsole.ColorConsole.WriteLine("$R The foreground color is red");

  等效于:

var old=Console.ForegroundColor;
Console.ForegroundColor=Console.Red;
Console.WriteLine("The foreground color is red");
Console.ForegroundColor=old;

  通过以上代码的展示相信你已经猜到了,$R是用来控制输出文字的颜色。事实上也的确如此。在默认情况下使用“$”标识修改前景色,“@”标识修改背影色,紧跟在标记后面一个字符则表示颜色值,如上例中的R则代表ConsoleColor.Red。

ColorConsole的颜色控制语法有两种,一种是整体颜色标识;另一种则是区间颜色标识。

整体颜色标识:

这种标识没有结束标记,通常自标识起至结束颜色都是一样的,除非又使了其他的颜色标识。本文第一个示例使用的就是这种语法。

区间颜色标识:

在整体颜色标识基础上增加一对中括号就成了区间颜色标识。中括号内的文字将以指定的颜色显示,括号外的文字将用原来的颜色显示。而且括号还可以多层的嵌套。

//区间颜色输出控制
ColorConsole.WriteLine("今天是:$G[{0:yyyy-MM-dd}],时间是:@y[{0:HH:mm:ss}]",DateTime.Now);

  ColorConsole还提供了注入方法,这可以让System.Console支持这种有颜色的语法。

ColorConsole.Inject();
Console.WriteLine("@w$R Hello $G[Color] @B[Console]!");

  颜色语法中的色值与ConsoleColor按以下关系进行映射(小写表示Drak Color):

  • r => ConsoleColor.DarkRed
  • R => ConsoleColor.Red
  • g => ConsoleColor.DarkGreen
  • G => ConsoleColor.Green
  • b => ConsoleColor.DarkBlue
  • B => ConsoleColor.Blue
  • c => ConsoleColor.DarkCyan
  • C => ConsoleColor.Cyan
  • y => ConsoleColor.DarkYellow
  • Y => ConsoleColor.Yellow
  • m => ConsoleColor.DarkMagenta
  • M => ConsoleColor.Magenta
  • w => ConsoleColor.Gray (Dark White)
  • W => ConsoleColor.White
  • a => ConsoleColor.DarkGray
  • A => ConsoleColor.Black

  有需要的同学可以通过以下两种方式获取:

  GitHub:https://github.com/cbanor/ColorConsole

  NuGet - Package Manager : Install-Package Shotgun.ColorConsole

最新文章

  1. .net网站常见问题及解决方案
  2. pg_rewind 介绍
  3. nginx的rewrite,gzip,反向代理学习笔记
  4. 基于Linux的集群系统(八)--转
  5. mysql安装启动教程(两种方法)
  6. go和swift
  7. Java编程 的动态性,第 2部分: 引入反射--转载
  8. Django的安装配置和开发
  9. c语言中-----分配内存函数
  10. C#堆栈
  11. LKD: Chapter 7 Interrupts and Interrupt Handlers
  12. JS-数组操作3
  13. Codeforces Round #530 (Div. 2) F (树形dp+线段树)
  14. Linux上的压缩与归档
  15. Sallen-Key Active Butterworth Low Pass Filter Calculator
  16. CentOS 7 Flannel的安装与配置
  17. mybatis学习----------查询数据库返回结果为空
  18. sprint初步计划(第一天)
  19. 辅助判卷程序的一些小bug
  20. jenkins持续集成工作原理

热门文章

  1. 20190127-Orleans与SF小伙伴的部分问答
  2. 【题解】埃及分数-C++
  3. 【NOIP2017】图书管理员-C++
  4. 说说WPF的依赖属性
  5. 阿里百川HotFix2.0热修复初体验
  6. 十五、SQL Server中的事务与锁
  7. nl2br()处理字符串中的换行符
  8. Centos7 安装VNCserver&图形界面
  9. java - 数组与String的length方法问题
  10. [学习笔记] NumPy走一趟(持续更)