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 |
\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");
}
相关文章
- NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
- C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- Word控件Spire.Doc 【段落处理】教程(十九):在 C#/VB.NET 中将 ASCII 字符设置为 Word 中的项目符号
- C#【控件篇】组件ErrorProvider的使用
- C#,入门教程(07)——软件项目的源文件与目录结构
- C#中5步完成word文档打印的方法
- C# 编写Web API
- C# 创建一个简单的WebApi项目
- Visual C#实现HTTP代理服务程序
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- C# 并行编程
- ASP.NET 3.5(c#)区域化设置(LCID)
- C# MVC中视图页面cshtml中添加变量(前后都有字符时)
- 【C#】C# IO类路径合并、本地路径、拼接路径Path.Combine
- c#方法生成mysql if方法(算工作日)
- 关于C#中的动态数组ArrayList
- c# implicit explicit关键字(隐式和显式数据类型转换)
- c#类的定义,c#中的关健字,C#标识符