zoukankan      html  css  js  c++  java
  • Java String.split()函数分隔回车注意事项

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

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

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

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

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

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

    This(回车)

    is testing(无回车)

    这时候问题就来了。。。

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

    This
    is testing

    2、如果这个文件是在window下编写的,那么就该注意了,如果你还是用str.split(" ")就会出现错误的结果,如下:

    This
    
    is testing

    有人可能说没什么区别啊,仔细看好了,第2个的结果,this和is testing中间有个空行,而第一个没有。为什么会出现这个结果。

    这还要从回车符来讲,简单来说,window下回车是由 (即0x0D和0x0A)组成的,注意不是 ,而linux下回车是由 (即0x0A)小伙伴们别搞错了,这个我自己证实过,

    这个window下编辑的文件,我用16进制打开的,大家看到第3,4列中的是0D、0A,也就是回车。

    而在Linux下是这个样子的:

    这个是linux下的文件用16进制打开的情况,红圈中只有个0A,也就是回车。

    到这里我们就明白了,刚才在window下用split(" ")出现的结果,则是this 和is testing两个部分。

    而在linux下用split(" ")出现的结果,则是this和is testing两个部分,this后面则就没有 。

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

  • 相关阅读:
    C#遍历DataSet中数据的几种方法总结
    angularjs作用域
    SQL 语句日期用法及函数
    Sublime Text3 快捷键汇总
    AngularJS 最常用的功能
    C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
    AngularJS的指令用法
    [WCF REST] Web消息主体风格(Message Body Style)
    泛型
    语法补充
  • 原文地址:https://www.cnblogs.com/gemeiyi/p/10845178.html
Copyright © 2011-2022 走看看