作者:Sun1956 
原文:https://blog.csdn.net/sun1956/article/details/45096117

---------------------

我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的。

如果想以回车来分隔字符串,很多同学都会这样做。下面是例子:

String[] res = str.split("\n");

但是这样可能会有一个潜在的问题,如果我们的str字符串是从文本文件中得到的,那么就会出现一个隐患。
假如我们的文件为 test.txt ,里面的内容为:

This(回车)

is testing(无回车)

这时候问题就来了。。。

1、如果这个文件是在Linux或者mac下建立编写的,那么用str.split("\n")会出现正确的结果,如下:

This
is testing

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。

这个隐患的细节,还要多多注意。

Java String.split()函数分隔回车注意事项的更多相关文章

  1. java String.split()函数的用法分析

    java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...

  2. Java——String.split()函数

    在java doc里有 String[] java.lang.String.split(String regex) Splits this string around matches of the g ...

  3. 【转】java String.split()函数的用法分析

      在java.lang包中有String.split()方法的原型是: public String[] split(String regex, int limit) split函数是用于使用特定的切 ...

  4. [java]java String.split()函数的用法分析

    转自:http://swiftlet.net/archives/709 一.在java.lang包中有String.split()方法的原型是: public String[] split(Strin ...

  5. String.Split()函数

    我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),当中用到了String.SPl ...

  6. String.Split()函数 多种使用实例

    我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),其中用到了String.SPl ...

  7. String.Split()函数 非原创

    我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),其中用到了String.SPl ...

  8. Java String.split()小点

    java String.split(); 别的不说,单说其中一个问题,这个函数去切分空字符串时,得到的结果: public static void main(String[] args) {// St ...

  9. Java String.split()用法小结

    在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用“.”作为分隔的话,必须是如下写法,String.split( ...

随机推荐

  1. Python进阶----多表查询(内连,左连,右连), 子查询(in,带比较运算符)

    Python进阶----多表查询(内连,左连,右连), 子查询(in,带比较运算符) 一丶多表查询     多表连接查询的应用场景: ​         连接是关系数据库模型的主要特点,也是区别于其他 ...

  2. python后端链接数据库-----MySQLdb

    连接数据库之前请先确认好以下事宜: 1.已经建议好相应的数据库 2.在数据库中已经建立了相应的表 3.已经安装了MySQldb模块 示例: import MySQLdb # 打开数据库连接 db = ...

  3. 安卓、ios时间转换成时间戳的形式

    将日期转换成时间戳的形式,在安卓和ios不同的系统下转正会有兼容性的问题 安卓系统下Date.parse(new Date('2018-03-30 12:00:00'))会直接转换成时间戳的形式(简单 ...

  4. 下拉菜单旋转出现css

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. k8s的node节点无法调度的问题

    1.现象,创建deployment时 2.查看污点 [fedora@k8s-cluster--ycmwlao4q5wz-master- ~]$ kubectl describe node k8s-cl ...

  6. http://www.jb51.net/article/51934.htm

    这篇文章主要介绍了mysql优化limit查询语句的5个方法,它们分别是子查询优化法.倒排表优化法.反向查找优化法.limit限制优化法和只查索引法,需要的朋友可以参考下   mysql的分页比较简单 ...

  7. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  8. 搜索和浏览离线 Wikipedia 维基百科(中/英)数据工具

    为什么使用离线维基百科?一是因为最近英文维基百科被封,无法访问:二是不受网络限制,使用方便,缺点是不能及时更新,可能会有不影响阅读的乱码. 目前,主要有两种工具用来搜索和浏览离线维基百科数据:Kiwi ...

  9. C#-Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046}

    异常信息如下 捕获到执行这句时异常: Excel.Application ep = new Excel.ApplicationClass(); Retrieving the COM class fac ...

  10. Django之 RESTful规范

    RESTful 规范 一.什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征 ...