java换行转义字符串

您所在的位置:网站首页 Java中换行符 java换行转义字符串

java换行转义字符串

2023-02-11 01:56| 来源: 网络整理| 查看: 265

1.“回车”这个名词的来历。

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

2.“换行”是一种操作或者动作。

换行: 在电脑上,编辑软件中一般用于结束一行文字输入,并将光标移到下一行的行首的位置。

3.   转义字符“\r”,“\n”。

6b8801d23502a16bf86a9285048dea90.png

在C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,因为后面的字符,都不是它本来的ASCII字符意思了就称为转义字符,。Java是在的底层用c 和c++写的,Java中也有转义字符这一说。

看表头 有控制码 和打印码 的区分

4.其他的一些知识

在Unix系统下执行 换行操作 用“\n”   在windows 操作做系统下执行 换行操作 用“\r\n”  在Mac操作系统下执行 换行操作用“\r”

其他人对这些知识点的介绍:

有了上面的了解 我们可以这样认为

我们通常说的“回车” 也就是得到 换行的效果 也就是点电脑上的enter键

转义字符  是用在打印数据时 或者 说 在电脑硬盘上输入数据使用  来控制字符的位置  这些字符不显示  来控制一些操作

回车得到换行的效果,敲enter键,在文本文件中产生我们看不见的转义字符

下面来测试一下

1.测试控制台输出(打印)规律

1 public classDemoEscapeCharacter {2 public static voidmain(String[] args) {3 System.out.print("aaa");4 System.out.print("bbb");5 System.out.print("ccc");6 System.out.print("ddd");7 System.out.print("eee");8 System.out.print("fff");9 System.out.println("*************");10 System.out.print("转义字符\\r "+"aaa\r");11 System.out.print("转义字符\\n "+"bbb\n");12 System.out.print("转义字符\\r\\n "+"ccc\r\n");13 System.out.print("转义字符\\n\\r "+"ddd\n\r");14

15 System.out.print("转义字符\\n x \\r "+"eeeeeee\nf\r");16 System.out.print("转义字符\\n xxx \\r "+"eeeeeee\nfff\r");17 System.out.print("转义字符\\r x \\n "+"eeeeeee\rf\n");18 System.out.print("转义字符\\r xxx \\n "+"eeeeeee\rfff\n");19 System.out.println("******************************************");20 System.out.print("转义字符\\n\\r\\r\\r"+"eeeeeeeeeeeeeeeee\n\r\r\r"+"abcdefghijk");21 }22 }

b962e65e8b0490759da8bbc279577e5a.png

原先没有在字符串末尾加 转义字符的 输出(打印)到控制台 没有换行 加有"\r","\n","\r\n"的都出现换行

那么在控制台的换行是如何实现的那?

"\r","\n"------>"\r\n"  前两者都转换为了“\r\n” 或者 说都是换行的动作  因为Java中有 重载 方法 ,也就是Java面向对象的一个特征 多态。也可以看出Java的跨平台 无论什么平台用IO流读到内存中 显示到控制台上的" 文本信息"可以无损还原。

“ddd\n\r” 不符合 "\r","\n","\r\n" 任何一个 只能 执行“\n”,"\r",也就是两次换行 所以打印出来时和“eeeeeee\nf\r” 的eeeeeee有一行空行

最后“eeeeeeeeeeeeee\n\r\r\rabcdefghijk”有四次换行 最后一次换行 有内容写入 所以有3行空白行

2.测试Windows下的换行是否是“\r\n”

1 importjava.io.FileNotFoundException;2 importjava.io.FileReader;3 importjava.io.FileWriter;4 importjava.io.IOException;5

6 public classDemoReader {7 public static voidmain(String[] args) {8 FileReader fr=null;9 try{10 fr=new FileReader("C:/Users/lenovo/Desktop/编译错误单词.txt");11 char []buf=new char[10];//接受读取的一段 信息

12 int realCount=0;13 while ((realCount=fr.read(buf))!=-1){14 for (int i = 0; i

21 System.out.print(buf[i]);22 }23 }24 } catch(FileNotFoundException e) {25 //TODO Auto-generated catch block

26 e.printStackTrace();27 } catch(IOException e) {28 //TODO Auto-generated catch block

29 e.printStackTrace();30 }finally{31 if(fr!=null){32 try{33 fr.close();34 } catch(IOException e) {35 //TODO Auto-generated catch block

36 e.printStackTrace();37 }38 }39 }40 }41 }

89a06d2be92d1fa8ad68448a986668fe.png

5048a50a84e88e740866f724f5f82f80.png

b5b057358b3782c41f173b82c61edb4d.png

第一张图片是Windows中用记事本打开的原文本

第二张图片是注释掉15-20行代码实现的无损还原

第三章图片是不注释15-20行代码实现的 增加还原

第三张控制台输出内容  的解释

代码 中 进行了这样的操作 凡是读取到的转义字符“\r”向控制台多输入一个 字符串\r

凡是读取到的转义字符“\n”向控制台多输入一个 字符串\n

这样的话因为 Windows 下记事本打开的每行末尾都有两个我们看不见的转义字符"\r","\n",这两个字符是我们在Windows下敲enter键产生的 正是ASCII码中的控制字符

io流读取数据时可以读取到 ,我们在还原时进行特殊的处理来确定 Windows下的换行控制字符 是什么

以控制台第一行第二行为例  因为 在第一行 “编译异常”末尾有“\r”,“\n”两个字符 当我们读取到字符“\r”时我们在原来的末尾加上了字符串“\r”,然后读取到的“\r”向控制台输出 即让控制台换行,所以当我们读取到下一个字符“\n”时 输出的字符串“\n”在下一行(第二行)行首显示(打印)出来 然后 读取到的转义字符“\n”向控制台输出 即 继续换行  所以原来的第二在控制台的第三行输出

结合控制台打印特点 可知道Windows下的换行是通过 “\r\n”两个字符控制的 或者说我们每次换行敲下enter键 就产生了两个我们看不见的转义字符“\r\n”

我们还可以逆向测试  从程序中向 硬盘写入 text文件的内容

程序如下 结果如下 分析 靠个人眼力  很简单

1 importjava.io.FileWriter;2 importjava.io.IOException;3

4 public classTestFileWriter {5 public static voidmain(String[] args) {6 String[] text={7 "这是第一行\n",8 "这是一个TestFileWriter示例程序\n",9 "需要用FileWriter打开文件\n",10 "访问结束后需要关闭文件\n",11 "否则内容不会写入文件,因为只写到了磁盘的缓冲区",12 };13 FileWriter fw=null;14 try{15 fw=new FileWriter("C:/Users/lenovo/Desktop/FileWriter1.text");16 for(String str:text){17 char[]buf=str.toCharArray();18 fw.write(buf,0,buf.length);19 }20 } catch(IOException e) {21 //TODO Auto-generated catch block

22 e.printStackTrace();23 }finally{24 try{25 fw.close();26 } catch(IOException e) {27 //TODO Auto-generated catch block

28 e.printStackTrace();29 }30 }31 }32 }

7e1bb35ade0785e923e5bdb68305f6e4.png

1 importjava.io.FileWriter;2 importjava.io.IOException;3

4 public classTestFileWriter {5 public static voidmain(String[] args) {6 String[] text={7 "这是第一行\r\n",8 "这是一个TestFileWriter示例程序\r\n",9 "需要用FileWriter打开文件\r\n",10 "访问结束后需要关闭文件\r\n",11 "否则内容不会写入文件,因为只写到了磁盘的缓冲区",12 };13 FileWriter fw=null;14 try{15 fw=new FileWriter("C:/Users/lenovo/Desktop/FileWriter1.text");16 for(String str:text){17 char[]buf=str.toCharArray();18 fw.write(buf,0,buf.length);19 }20 } catch(IOException e) {21 //TODO Auto-generated catch block

22 e.printStackTrace();23 }finally{24 try{25 fw.close();26 } catch(IOException e) {27 //TODO Auto-generated catch block

28 e.printStackTrace();29 }30 }31 }32 }

8d40e690e0e522502099067da7abe246.png

还有个比较简单的方法 但看不出 内容

打开记事本  输入  两个汉字  敲enter  保存 ;查看文件大小 6字节[b];

创建新的 一个 记事本 文件 输入两个汉字 保存 ;查看文件大小 4字节[b];

一个汉字两个字节 2[b] 。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3