javasplit换⾏符_JavaString.split()函数分隔回车注意事项---------------------
我们在Java中如果⽤到处理要分隔字符串,不免会⽤到String的split(String regex)函数,这时候我们要注意的。
如果想以回车来分隔字符串,很多同学都会这样做。下⾯是例⼦:
String[] res = str.split("\n");
但是这样可能会有⼀个潜在的问题,如果我们的str字符串是从⽂本⽂件中得到的,那么就会出现⼀个隐患。
假如我们的⽂件为 ,⾥⾯的内容为:
This(回车)
is testing(⽆回车)
这时候问题就来了。。。
1、如果这个⽂件是在Linux或者mac下建⽴编写的,那么⽤str.split("\n")会出现正确的结果,如下:
This
is testing
java中split的用法2、如果这个⽂件是在window下编写的,那么就该注意了,如果你还是⽤str.split("\n")就会出现错误的结果,如下:
This
is testing
有⼈可能说没什么区别啊,仔细看好了,第2个的结果,this和is testing中间有个空⾏,⽽第⼀个没有。为什么会出现这个结果。
这还要从回车符来讲,简单来说,window下回车是由\r\n(即0x0D和0x0A)组成的,注意不是\n\r,⽽linux下回车是由\n(即0x0A)⼩伙伴们别搞错了,这个我⾃⼰证实过,
这个window下编辑的⽂件,我⽤16进制打开的,⼤家看到第3,4列中的是0D、0A,也就是回车。
⽽在Linux下是这个样⼦的:
这个是linux下的⽂件⽤16进制打开的情况,红圈中只有个0A,也就是回车。
到这⾥我们就明⽩了,刚才在window下⽤split("\n")出现的结果,则是this\r和is testing两个部分。
⽽在linux下⽤split("\n")出现的结果,则是this和is testing两个部分,this后⾯则就没有\r。
这个隐患的细节,还要多多注意。