转义字符的整理

文章目录

  • 转义符号 \
  • 转义字符清单
    • 换行符
    • 横向制表符
    • 空格
    • 编码符

转义符号 \

反斜杠\在程序设计中称为转义符,用来表示那些不能直接显示的字符。例如:换行。
在不同的系统中换行的表示又不相同,在Unix中换行符是\n,而在Windows中换行符是\r\n(先回车再换行),在Mac中换行是\r。这里的换行符的意思是,当我们使用文本编辑器书写内容时,当我们完成一行内容(无论主动敲击回车键换行还是文本编辑器自动换行),编辑器会自动在我们每行文本后添加转义字符(\n或者\r\n或者\r),也就是在每行末尾做个“标记”,当使用编辑器打开时,方便我们查看(这些“标记”我们看不到)。
另外,在Bash中用于去除某些字符的特殊意义,保留跟随在\之后的字符的字面值,参考示例1。
示例1:

ubuntu@ubuntu:~$ echo $HOME
/home/ubuntu
ubuntu@ubuntu:~$ echo \$HOME
$HOME

说明:反斜线去除了$字符的特殊意义,保留字面值,从而不输出HOME变量的值

扩展知识:
路径和参数的表示符号

  • Windows:/是表示参数,\是表示本地路径
  • Linux和Unix:/表示路径,\表示转义,---表示参数
  • 网络:由于网络使用Unix标准,所以网络路径用/

参考文章:
Linux下反斜杠号""引发的思考

转义字符清单

转义字符含义ASCII 码(16/10 进制)
\o空字符(NULL)00H/0,H 表示十六进制,其实可以写成 0x00
\n换行符(LF, Line Feed)0AH/10,十六进制数可以写成 0x0A,下同
\r回车符(CR, Carriage Return)0DH/13
\t水平制表符(HT, Horizontal Tab)09H/9
\v垂直制表符(VT, Vertical Tab)0BH/11
\a响铃(BEL, Bells)07H/7
\b退格符(BS, Backspace)08H/8
\f换页符(FF, Form Feed)0CH/12
\'单引号27H/39
\"双引号22H/34
\\反斜杠5CH/92
\?问号字符3F/63
\$美元符号
\ddd三位八进制所代表的任意字符三位八进制
\xhh二位十六进制数所代表的任意字符二位十六进制

换行符

\r是回车,本义是光标重新回到本行开头,名称传承自以前的打字机,表示打印头归位,r的英文return,控制字符可以写成CR,即Carriage Return

\n是换行,本义是光标往下一行(不一定到下一行行首),名称传承自以前的打字机,表示走纸另起一行,n的英文newline,控制字符可以写成LF,即Line Feed

  • Dos和Windows采用回车(CR)+换行(LF)表示下一行,转义符号:\r\n,具体含义:光标回到本行开头并往下一行,十六进制ASCII码:0x0D0A

  • Unix类系统中采用换行(LF)表示下一行,转义符号:\n,具体含义:光标下一行并回到行首,十六进制ASCII码:0x0A

  • MAC OS中采用回车(CR)表示下一行,转义符号:\r,具体含义:光标回到本行开头并往下一行,十六进制ASCII码:0x0D

用表格整理如下:

WindowsLinux/UnixMac OS
换行符\r\n\n\r
ASCII0x0D0A0x0A0x0D

注意:
vi/vim编辑器中,0x0D0A被表示成^M$$不是换行符的表示,换行符没有表示出来,$是文本结束EOF的表示),关于这个^M$东西并没有同时出现过呀,我有疑问!!!
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开(例如vi编辑器)的话,在每行的结尾会出现^M字符。

扩展知识:

  1. 关于“回车键”的来历
    还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个字符(原为单词,但是个人觉得这里应该是字符),“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。
    在电脑键盘上,“回车键”上曾经使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。

  2. 为什么Windows会使用\r\n作为换行符?
    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒(注:估计是从打字机的最右边回到最左边的机械运动 所需要的时间),正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
    于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车(Carriage Return)”,告诉打字机把打印头定位在左边界;另一个叫做“换行(Line Feed)”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

横向制表符

\t:横向制表符(HT),表示跳到下一个 TAB 位置,也叫水平制表符

\t:是补全当前字符串长度到 8 的整数倍,最少 1 个最多 8 个空格,补多少要看 \t 前字符串长度。

比如当前字符串长度 10,那么 \t 后长度是16,也就是补 6 个空格;如果当前字符串长度 12,此时 \t 后长度是16,补 4 个空格。

空格

半角空格的 Unicode 是:\u0020,代码中常用的,是英文符号
全角空格的 Unicode 是:\u3000,中文中使用,是中文符号

编码符

\u,表示Unicode编码,例如:\u4f60\u597d\uff0c\u4e16\u754c\u后面的是十六进制数,转换成二进制数是2个字节(16bit),表示2个字节表示一个字符,这里有5个字符,如下:

 public static void main(String[] args) {System.out.println("\u4f60\u597d\uff0c\u4e16\u754c");}

得到的实际字符是:
你好,世界

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cloud foundry_介绍“又一个” Cloud Foundry Gradle插件

cloud foundry在与两个同事(感谢Mark Alston和Dave Malone !)一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中,我决定尝试编写Gradle插件来执行一些通常需要完成的任务使用命令行Cloud Foundry Client完成 。 引入一个…

C++ 11 深度学习(十八)模板概念,函数模板定义、调用

模板作为一个框架&#xff0c;通过传入的参数&#xff0c;来具体实例化想要的东西。 1.模板定义是用template关键字开头的&#xff0c;后跟<>,<>里面叫模板参数列表(模板实参)&#xff0c;如果模板参数列表中有多个参数使用逗号隔开。 2.<>里面至少要有一个…

kotlin将对象转换为map_Kotlin 集合框架:常用集合工具函数(Map 部分)

kotlin.collections.Maps.kt 文件定义了许多针对 Map 接口的工具函数&#xff0c;其中大多数是涉及函数式编程的高阶函数&#xff0c;我们在这里先不讲&#xff0c;等到集合框架结束后进入高阶函数时再讲。今天只讲几个简单的函数。Pair 类和 to() 函数Map 接口表示一种“键 -&…

Oracle/MySQL/Java数据类型对应表

文章目录数据类型对照表MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比关于 MySQL 整型显示位数的问题关于 MySQL 的 timestamp关于 JDBC 类型数据类型对照表 MysqlOracleJavaBIGINTNUMBER(19,0)java.lang.LongBITRAWbyte[]BLOBBLOB RAWbyte[]CHARCHARjava.lang.…

java10个基础错误_我们处理了10亿个Java记录的错误-这是导致97%的错误的原因

java10个基础错误97&#xff05;的记录错误是由10个唯一错误引起的 在2016年&#xff0c;一件事在30年内没有改变。 开发和运营团队仍依靠日志文件对应用程序问题进行故障排除。 由于某些未知原因&#xff0c;我们隐式信任日志文件&#xff0c;因为我们认为事实隐藏在其中。 如…

MySQL的索引学习

文章目录索引自动创建索引手动创建索引删除索引使用索引单列索引PRIMARYNORMALUNIQUEFULLTEXT组合索引&#xff08;复合索引/联合索引&#xff09;索引不足之处索引使用注意事项索引方式 Hash 和 BTree 比较删除索引索引 数据库的索引就像一本书的目录&#xff0c;能够加快数据…

aptx与ldac音质区别_蓝牙协议LDAC和aptx的区别?

LDAC技术的功能介绍LDAC是索尼研发的一种无线音频编码技术&#xff0c;它最早在2015年的CES消费电子设备大展上亮相。在当时&#xff0c;索尼表示比起标准的蓝牙编码、压缩系统&#xff0c;LDAC技术要高效三倍之多。这样一来&#xff0c;那些高解析度的音频文件在进行无线传输的…

【音视频安卓开发 (九)】使用AudioRecord录制PCM音频

1.需要添加权限 <uses-permission android:name"android.permission.CAMERA" /><uses-permission android:name"android.permission.FLASHLIGHT" /><uses-permission android:name"android.permission.CAMERA" /><uses-per…

结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德

结果集 tostring使用Java或我使用过的其他编程语言&#xff0c;我发现有时候可以用该语言完成某些事情&#xff0c;但通常不应该这样做。 通常&#xff0c;这些误用语言似乎无害&#xff0c;当开发人员首次使用它们时可能是有益的&#xff0c;但后来同一位开发人员或另一位开发…

3制造数据集_基于MBD的产品设计制造技术研究

本篇节选自论文《基于MBD的产品设计制造技术研究》&#xff0c;发表于《中国电子科学研究院学报》第8卷第6期&#xff0c;作者为中国电子科技集团公司第14研究所专家朱建军。本文经授权转载自公众号学术plus&#xff0c;版权归原作者所有。作者&#xff1a;中国电子科技集团公司…

JSP文件如何转换成Java文件?

文章目录jsp 文件如何转换成 java 文件jsp 何时开始编译jsp 编译后的文件存储目录jsp 文件如何转换成 java 文件 html ----> service(),使用 out.write()输出。 java代码片段 <% %> ----> service(),照…

【WebRTC---源码篇】(九)媒体协商

1.媒体协商的过程 2. 重要的接口类 3.时序图 4.几个关键点 5.code if (InitializePeerConnection()) {peer_id_ = peer_id;//参数1:观察者,创建成功后回调OnSuccess//参数2:消息类型,自动推导peer_connection_->CreateOffer(this, webrtc::PeerConnectionInterface::RTCOff…

jpa 使用jdbc_在JPA和JDBC中使用存储过程。 嗯,只要使用jOOQ

jpa 使用jdbcJava杂志的当前版本由Josh Juneau撰写了有关JDBC和JPA的大数据最佳实践的文章&#xff1a; http : //www.javamagazine.mozaicreader.com/MayJune2016 本文介绍了如何在JDBC中使用存储过程&#xff08;不幸的是&#xff0c;请注意如何关闭资源。即使在Java Magazi…

JSP文件中Java代码的几种形式(JSP脚本)

文章目录第一种形式&#xff08;Java 代码片段&#xff09;第二种形式&#xff08;JSP 表达式&#xff09;第三种形式&#xff08;JSP 声明&#xff09;第四种形式&#xff08;JSP 指令&#xff09;第一种形式&#xff08;Java 代码片段&#xff09; 原样复制到 service() 方法…

【WebRTC---源码篇】(七)NACK的处理流程

NACK调用栈 从分发器接收Packet包 void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet) {if (packet.payload_size() == 0) {// Padding or keep-alive packet.// TODO(nisse): Could drop empty packets earlier, but need to figure out how…

java实现资源监视器_实现Java监视的12个步骤程序存在缺陷

java实现资源监视器Java监视的当前状态最大的问题是什么&#xff1f; 生产中的错误很像喝醉的短信。 您只有在事情已经发生之后才意识到出了点问题。 发短信日志通常比应用程序错误日志更有趣&#xff0c;但是……两者可能同样难以修复。 在本文中&#xff0c;我们将执行一个…

QT之QML布局相关总结

使用QML有助于提高界面编写效率&#xff0c;对付界面开发来说&#xff0c;页面如何布局是一个绕不开的点&#xff0c;本文总结一下QML中常用的一些和布局相关的内容。 目录 1.手动定位 2.坐标绑定定位 3.锚定位 4.布局定位器 5.布局管理器 6.其他布局相关 6.1 弹簧功能…

bpmn2 vue 设计器_vue项目中使用bpmn-基础篇

后退前进下载style"display: inline-block;":file-list"fileList"class"upload-demo"action"":auto-upload"false":show-file-list"false":http-request"httpRequest":on-change"handleOnchangeFi…

JSP的隐含对象/隐藏对象/内置对象介绍

文章目录outJspWriter 和 PrintWriter 的区别requestresponsesessionapplicationexceptionconfigpageContextpageContext 的作用绑订数据获得其它几个隐含对象page四个 JSP 域对象访问范围比较out out 对象是 javax.servlet.jsp.JspWriter 类的实例&#xff0c;用来在 respons…