写点什么

C# 中的转译字符'/b'

作者:陈言必行
  • 2022 年 7 月 27 日
  • 本文字数:1413 字

    阅读完需:约 5 分钟

C# 中的转译字符’/b’


何为转译字符?


来自百度百科的诠释 —> 转义字符:


所有的 ASCII 码都可以用“\”加数字(一般是 8 进制数字)来表示。而 C 中定义了一些字母前加""来表示常见的那些不能显示的 ASCII 字符,如\0,\t,\n 等,就称为转义字符,因为后面的字符,都不是它本来的 ASCII 字符意思了。


所有的转义字符和所对应的意义:

转义字符 意义 ASCII 码值(十进制)

\a 响铃(BEL) 007

\b 退格(BS) ,将当前位置移到前一列 008

\f 换页(FF),将当前位置移到下页开头 012

\n 换行(LF) ,将当前位置移到下一行开头 010

\r 回车(CR) ,将当前位置移到本行开头 013

\t 水平制表(HT) (跳到下一个 TAB 位置) 009

\v 垂直制表(VT) 011

\ 代表一个反斜线字符’’’ 092

’ 代表一个单引号(撇号)字符 039

" 代表一个双引号字符 034

? 代表一个问号 063

\0 空字符(NUL) 000

\ddd 1 到 3 位八进制数所代表的任意字符 三位八进制

\xhh 十六进制所代表的任意字符 十六进制


注意:


1. 区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换


2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == '\xF




下面进入正题,看下 C# 中的转译字符’/b’:


先看几段代码吧


static void Main(string[] args){   Console.WriteLine("你选择的\b都是人生要经历的...");   Console.WriteLine("你选择的\b\b都是人生要经历的...");   Console.WriteLine("你选择的\b\b\b都是人生要经历的...");   Console.WriteLine("你选择的\b\b\b\b都是人生要经历的...");}
复制代码


输出:



这个输出和我想象的不一样啊,描述不是说相当于退格键吗?这第一句中间怎么还有个空格?第二句为什么只退格了一次?


从输出看来’\b’,是以一个空格符,替换了前一个字符啊,但是这样解释有两个’\b’在一起时,第二个’\b’的执行应该是以空格符替换空格符,回头看看第二句的输出结果,明显不是这样,那这到底是个什么情况呢?请继续向下看:


static void Main(string[] args){    Console.WriteLine("我选择的'\b都是人生要经历的...");    Console.WriteLine("你选择的\'\b都是人生要经历的...");    Console.WriteLine("你选择的czy\b都是人生要经历的...");    Console.WriteLine("你选择的123\b都是人生要经历的...");    Console.WriteLine("你选择的>>>\b都是人生要经历的...");    Console.WriteLine("你选择的》》》\b都是人生要经历的...");}
复制代码



上面使用’\b’字符,修改(字符串单引号,转译后的单引号,数字,字母等),看下输出结果,这才是我们理解的退格的意思嘛,那么我认为’/b’在进行计算时,前面的字符能在 ASCII 码表中找到的值,那么其可以起到退格的作用,若找不到其作用可理解为是使用空格符去替换对应字符.




我还发现当’\b’在最后一个字符时,并没有对其进行退格操作,代码如下:


static void Main(string[] args){     Console.WriteLine("123456\b");     Console.WriteLine("123456\b\b");     Console.WriteLine("123456\b\b\b");     Console.WriteLine("123456\b\b\b\b");     Console.WriteLine("-----------------------");
Console.Write("123456\b"); Console.WriteLine(); Console.Write("123456\b\b"); Console.WriteLine(); Console.Write("123456\b\b\b"); Console.WriteLine(); Console.Write("123456\b\b\b\b"); Console.WriteLine(); Console.WriteLine("-----------------------"); Console.Write("123456\b"); Console.Write("123456");}
复制代码



发布于: 刚刚阅读数: 3
用户头像

陈言必行

关注

公号:开发同学留步 2019.03.12 加入

我是一个从事Unity游戏开发攻城狮,6年开发经验,助你日常不加班。

评论

发布
暂无评论
C# 中的转译字符'/b'_七月月更_陈言必行_InfoQ写作社区