java水平制表符_java中水平制表符\t的作用

\t

\t是水平制表符在C/C++/Java等编程语言中的转义符号,因为在字符串中无法直接使用类似回车、水平制表符等这些看不见的字符,所以在输入字符串时用转义符号表示,而编译器看到这些转义字符能明白,并且会转换成真正要的符号。

水平制表符

在字符界面中,水平制表符表示紧跟后面的文字在往右一个表格位置显示或输出,通常一个表格位置占8个字符宽度,也就是相当于是把整个屏幕分成每8个字符为一个单元格大小,下一个表格位置是在下一个8的整倍数字符数的位置,使用水平制表符可以可以使文字内容在规整的位置显示或输出而看起来清晰整齐。

然而\t的作用不仅仅局限于此。

下面我们来看一段代码:

Test.java

import java.io.FileWriter;

import java.io.IOException;

public class Test

{

public final static String s1 = "100001,2000013,18767122758,330206199101130333\n";

public final static String s2 = "100001\t,2000013\t,18767122758\t,330206199101130333\t\n";

public static void main(String args[])

{

try{

FileWriter fw = new FileWriter("D:\\CSVTest\\csv1.csv");

fw.write(Test.s1);

fw.write(Test.s2);

fw.close();

} catch (IOException e){

e.printStackTrace();

}

}

} 在csv1.csv文件中写入两行字符串

第一行每个数据后面不带水平制表符\t

第二行每个数据后面带上水平制表符\t

注:csv文件的格式规范为:

1 开头是不留空,以行为单位。

2 可含或不含列名,含列名则居文件第一行。

3 一行数据不垮行,无空行。

4 以半角逗号(即,)作分隔符,列为空也要表达其存在。

5 列内容如存在半角逗号(即,)则用半角引号(即'')将该字段值包含起来。

6 列内容如存在半角引号(即')则应替换成半角双引号(")转义,并用半角引号(即')将该字段值包含起来。

7 文件读写时引号,逗号操作规则互逆。

8 内码格式不限,可为 ASCII、Unicode 或者其他。

9 不支持特殊字符

【摘自百度百科-CSV】

执行程序后打开csv1.csv,这里可用Excel或者WPS表格打开

6afcaaa59f591d42945b580f0c812ebe.png

我们可以找找第一行和第二行的区别:

1、第一行每个单元格里的数据都是右对齐,而第二行是左对齐

2、当单元格中的数据超出一定长度后,第一行的数据会按科学计数法显示,而第二行仍然按照原先的数据显示

通过拉伸C列和D列的单元格,我们还能发现:

3d2ace03c6b700d254bc179a452e0f15.png

3、原先C1单元格用科学计数法显示的数正常显示,而D1单元格不管拉伸到多少程度,还是用科学计数法显示。

4、选中单元格D1,里面的数据竟然变了。原来末4位是0333,现在变为0000。

此时注意:当你尝试关闭csv1.csv文件时,Excel会提示你是否保存对此文件的修改。如果你选择是,那么丢失的数据就找不回来了,csv1.csv就按当前的数据保存。

但是,为什么会发生数据丢失呢?这里和单元格的属性有关,因为此时单元格格式为常规,常规单元格格式不包含任何特定的数字格式,保存超过一定长度的数字是会默认采用科学计数法,而科学计数法说白了就是浮点数,是有精度的,超过一定长度以后会造成精度丢失。原来显示末4位是0000是因为长度超过了一定范围而无法显示,实际上的数据还是原来的数据,但是当你保存以后,原来的数据就变成了当前显示的数据,于是数据就丢失了。

但是为什么第二行的数据都能正常显示呢?这就是\t的作用了。它不需要通过改变单元格的格式就能保持数据原有的格式。

用能显示制表符的软件打开csv1.csv,这里用UltraEdit

d45f44edc9dd61e0b8c71c207f84074e.png

在第二行每个数据后面都有一个>,这个其实就是\t,就是水平制表符。

总结:\t 在导出数据、账单时还是蛮有用的,结合CSV文件使用,比excel文件更方便快捷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值