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

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

输出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

发布了462 篇原创文章 · 获赞 651 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/Czhenya/article/details/104577895