C13中的EscEscapeSequence

程序员有二十年 2024-09-24 10:38:36
C# 13 中的 Esc Escape SequenceIntro

C# 13 引入了一个新的转义字符 \e,代替 \u001b 来简化 Esc/Escape 的转义,我们可以使用它来简化 Console 里的一些输出格式控制

Sample

ANSI Console 的一些介绍的知识:https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797

(以下介绍来自 chatgpt

ANSI Console 是指支持ANSI(美国国家标准协会)转义码的命令行界面。这些转义码是一系列字符序列,用于控制文本格式、颜色和其他输出选项。

ANSI控制台的主要特点:

文本格式化:ANSI代码可以改变文本属性,比如让文本变为粗体、下划线或闪烁。

颜色控制:它们可以改变文本的前景色和背景色,使输出更加美观。

光标控制:ANSI转义码可以用于移动光标、清除屏幕的部分内容,或创建更复杂的布局。

兼容性:许多现代终端和命令行界面,包括macOS的终端、Windows的命令提示符和PowerShell(经过一些配置后),以及各种Linux终端,均支持ANSI转义码。

使用示例:改变文本颜色:echo -e "\033[31m这段文字是红色的!\033[0m"

在这个例子中,\033[31m将文本颜色设置为红色,而\033[0m则重置为默认颜色。

应用场景:脚本编写:开发者常在脚本中使用ANSI代码来增强用户体验。终端应用:许多命令行工具和应用程序利用ANSI代码来改善输出格式。游戏:文本游戏可能使用这些代码来创建引人入胜的用户界面。

总的来说,ANSI 代码增强了控制台应用的功能和美观,使其更加用户友好和视觉吸引。

output

这里是一个示例,使用了 ANSI console 的控制语法来指定输出文本的样式,这里指定了使用红色的前景色,也就是字体是红色,可以看到输出结果是红色的文字

第一个 Console.WriteLine 使用的是 \u001b,第二个 Console.WriteLine 使用的是新引入的 \e ,他们的效果是一样的

[ 是一个控制符,后面跟着的是参数,31m 表示设置前景色为红色,后面的 0m 代表重置所有的样式

所以在最后的 Console.WriteLine("Hello .NET") 输出的结果颜色是默认的颜色

我们再看下编译的时候编译器会怎么处理,我们可以直接借助 sharplab 来看

de-compilation

可以看到编译之后 \e 其实直接转换成了 \u001b,编译器帮我们做了转换,用到的地方可以简化一些可以更简单一点

Referenceshttps://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797https://github.com/spectreconsole/spectre.consolehttps://github.com/WeihanLi/SamplesInPractice/blob/main/net9sample/CSharp13Samples/EscapeCharSample.cshttps://github.com/dotnet/csharplang/blob/main/proposals/csharp-13.0/esc-escape-sequence.md

0 阅读:0

程序员有二十年

简介:感谢大家的关注