我们在开发过程中,经常需要将信息用不同的颜色标记出来,这可以让我们快速关注到重点信息。想必大家都知道,可以通过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

Console也要美颜了,来给Console添色彩的更多相关文章

  1. Node.js:console模块

    console模块提供了一个简单的调试功能,类似与web浏览器的javscript console. 下面简单介绍下该模块的使用以及用途,我使用了ES6的模版字符串(使用反引号标识),有兴趣的可以去了 ...

  2. Chrome浏览器调试,console简述

    作为一个前端开发者,不可避免的需要进行各种各样的调试. 在谷歌浏览器出来以前,火狐的firebug是特别有名的一款调试工具,不过自从谷歌浏览器诞生以来,其自带的开发者工具足以媲美firebug,某种程 ...

  3. 以 Console 方式运行、调试、编译 .Net 编写的 Windows 服务

    经常看到一些人在调试 Windows 服务时,很执著的在附加进程后调试!其实 .Net 编写的 Windows 应用程序,包括 Windows 服务都可以编译成 Console 程序!甚至于 ASP. ...

  4. console 输出信息美化

    不久前在一些前端的网站上看到的效果,以前觉得console只是拿来做做调试,不过现在看到别人网站的console美化效果,这个还可以作为一种网站个性来显示的.. 以%c开头,后面的文字就打印的信息,后 ...

  5. javascript的console.log用法

    f1.html代码 <iframe id="frame2" name="frame1" src="ww.html"></i ...

  6. Console app 里的依赖注入及其实例生命周期

    依赖注入是 ASP.NET Core 里的核心概念之一,我们平常总是愉快地在Startup类的ConfigureServices方法里往IServiceCollection里注册各种类型,以致有一些同 ...

  7. js控制台输出console

    介绍: js的console你可以在firefox的firedbug或者ie和google的f12调试模式下看到,这些主流浏览器的调试模式的控制可以输出一些信息,你的一些js代码测试可以直接在cons ...

  8. console对象-转

    console对象 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 开发者工具 console对象 console.log() console.debug() ...

  9. Chrome开发工具之Console

    Chrome开发工具-Console 看了别人的博客,才发现在百度主页用开发工具“Console”可以看到百度的招聘信息 前端调试工具可以按F12打开,谷歌的开发工具中的Console面板可以查看错误 ...

随机推荐

  1. Linux查看空间大小的命令

    在linux中,常用查看空间大小的命令有df.du,下面依次介绍一下. df 命令是linux系统上以磁盘分区为单位来查看文件系统的命令,后面可以加上不同的参数来查看磁盘的剩余空间信息.Linux d ...

  2. C语言的指针移动怎么理解

    C Primer pkus(第五版)中文版,老外写的还是很经典的,推荐给朋友们,购买地址:C primer plus 5版中文版购买 另外再推荐本书: 程序员面试宝典(第5版)第五版:程序员面试宝典( ...

  3. py+selenium运行时报错Can not connect to the Service IEDriverServer.exe

    问题: 运行用例时,出现报错(host文件已加入127.0.0.1 localhost): raise WebDriverException("Can not connect to the ...

  4. 【Netty】使用解码器Decoder解决TCP粘包和拆包问题

    解码器Decoder和ChannelHandler的关系 netty的解码器通常是继承自ByteToMessageDecoder,而它又是继承自ChannelInboundHandlerAdapter ...

  5. 【CodeForces - 1167C 】News Distribution(并查集)

    News Distribution 题意 大概就是分成几个小团体,给每个人用1 - n编号,当对某个人传播消息的时候,整个小团体就知道这个消息,输出 分别对1 - n编号的某个人传递消息时,有多少人知 ...

  6. Python开发:NumPy学习(一)ndarray数组

    一.数据维度 一个数据表达一个含义,一组数据表达一个或多个含义. 数据维度概念:一组数据的组织形式,其中有一维数据.二维数据.多维数据.高维数据. 1.  一维数据 一维数据由对等关系的有序或无序数据 ...

  7. ArcGIS API For JavaScript 开发(一)环境搭建

    标签:B/S结构开发,Asp.Net开发,WebGIS开发 前言:为什么写这个,一是学习:二是分享,共同进步,毕竟也是在这个园子里学到了很多: (一)环境搭建 集成开发环境:VS2013 Ultima ...

  8. Vue事件修饰符详解

    整体学习Vue时看到Vue文档中有事件修饰符的描述,但是看了之后并没有理解是什么意思,于是查阅了资料,现在记录下来与大家分享 先给大家画一个示意图理解一下冒泡和捕获 (1) .stop修饰符 请看如下 ...

  9. About dycf

    SYSU  数媒在读 所有资料可能与课程相关可能与参与项目相关 欢迎交流 . . . 中之人: ↓↓↓ ↑↑↑   是他  就是他  ↑↑↑

  10. Linux学习笔记06之DNS

    一.DNS概念:Domain Name System(域名系统) 是互联网上作为域名和IP地址相互映射的一个分布式数据库 二.DNS功能: 完成IP地址和域名之间的一个映射 三.DNS分类: 1.静态 ...