zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

2023-09-11 14:20:51 时间

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
\ddd1到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都是人生要经历的...");
        }

输出1

上面使用’\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