在Java遇到了将类似“1|2|3|4”的字符串分隔为数组的功能

这种问题能难倒有着十多年开发经验的的.NET码农?

        // Java代码
String s="1|2|3";
String[] array=s.split("|");

结果,出来的数组是这个鬼样子  1,|,2,|,3

仔细看看split传入的参数名,regex,是正则表达式,恍然大悟,要转义正则表达式……

        // Java代码
String s="1|2|3";
String[] array=s.split("\\|");

问题解决后,继续手贱研究这个split,寻找.NET里边我的最爱选项 StringSplitOptions.RemoveEmptyEntries 在哪里?

索性做个试验

        // Java代码
String s="1,2,3,,,";
String[] array=s.split(",");
// array的结果是1,2,3

难倒默认带RemoveEmptyEntries功能?

然后再试。。。

        // Java代码
String s="1,2,,,3,,,";
String[] array=s.split(",");
// "1","2","","","3"

这结果算什么鬼???舍尾法的RemoveEmptyEntries,自动舍弃尾部空元素?跟.NET的老码农找不到频道啊。。。

好吧,就算如此,中间的空元素我自己可以过滤,如果我不想舍弃尾部的空元素可又咋整?

百度了半天,找到了解决方案 ,如果想保留尾部空元素,要传入limit=-1

        // Java代码
String s="1,2,,,3,,,";
String[] array=s.split(",",-1); // 传入-1,保留尾部的空元素
// "1","2","","","3","","",""

好吧,我继续研究第二个参数limit

public String[] split(String regex, int limit)

从字面意思,应该是限制split返回数组元素的个数,

这个limit的含义倒是跟.NET的count参数非常类似

// C#代码
public String[] Split(String[] separator, int count, StringSplitOptions options)

如果limit或者count=n,表示匹配的次数为n-1

            // C#代码
String s = "1|2|3|||4";
String[] array = s.Split(new String[] { "|" }, , StringSplitOptions.RemoveEmptyEntries);
// array的结果为{"1","2|3|||4"}
        // Java代码
String s="1,2,,,3,,,";
String[] array=s.split(",",2);
// array的结果{"1","2,,,3,,,"}

看到这里,自以为都搞懂了

结果下面测试又让我郁闷了

        // Java代码
String s1="";
String[] array1=s1.split(",");
// array1的结果是{""} 数组含1空元素 String s2=",";
String[] array2=s2.split(",");
// array2的结果是{} 数组含0元素

这结果我是真想12315投诉了。。。

.Net转Java.06.字符串的split的区别的更多相关文章

  1. Java空字符串与null的区别和判断字符串是否为空的方法

    Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...

  2. Java 可变字符串StringBuilder/StringBuffer的区别

    public class StringBuilder_and_StringBuffer { private static long SystemTime(){ return System.curren ...

  3. java中空字符串、null的区别

    String 的null,或者赋值为"",有什么区别? 废话少说,上代码: public class EmptyAndNull { /** * @param args */ pub ...

  4. Java-Runoob-高级教程-实例-字符串:06. Java 实例 - 字符串查找

    ylbtech-Java-Runoob-高级教程-实例-字符串:06. Java 实例 - 字符串查找 1.返回顶部 1. Java 实例 - 字符串搜索  Java 实例 以下实例使用了 Strin ...

  5. java String字符串

      五.java数据类型之String(字符串) CreateTime--2017年7月21日16:17:45 Author:Marydon (一)数据格式 (二)初始化 // 方式一 String ...

  6. java截取字符串中的数字

    java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...

  7. Java:字符串类String的功能介绍

    在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...

  8. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

  9. Java之字符串String,StringBuffer,StringBuilder

    String类: String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明.在Java中用String类的构造方法来创建字符串变量. 声明字符串: ...

随机推荐

  1. 前端本地存储localStorage

    1.突破cookie 4K限制,一般浏览器支持5M 2.增 删 改 查 <!DOCTYPE html> <html lang="en"> <head& ...

  2. Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)

    Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...

  3. jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)

    一. jenkins 的配置 1.前提条件安装了GitLab Plugin (源码管理使用),GitLab Hook(gitlab webhook需要) Manage Jenkins--->Ma ...

  4. java生成Excel文件,下载

    pom引入poi的maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...

  5. react学习二 生命周期

    转自:https://www.cnblogs.com/gdsblog/p/7348375.html react 中compent getDefaultProps object getDefaultPr ...

  6. TF之RNN:matplotlib动态演示之基于顺序的RNN回归案例实现高效学习逐步逼近余弦曲线—Jason niu

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt BATCH_START = 0 TIME_STEP ...

  7. Java 浮点数精度丢失

    Java 浮点数精度丢失 问题引入 昨天帮室友写一个模拟发红包抢红包的程序时,对金额统一使用的 double 来建模,结果发现在实际运行时程序的结果在数值上总是有细微的误差,程序运行的截图: 输入依次 ...

  8. Farewell Party-构造

    Farewell Party 思路 : 转换思路 ,有 a [ i ] 个不相等的 ,那么至少得有 n - a [ i ]个与它相等的. 但是有可能与它拥有相同数目的有很多. 但是为了能够最终 分配成 ...

  9. VeeamOne9.5-t添加监控服务器

    打开 Veeam ONE Monitor 首先会让你配置报警邮件,也可以选择跳过随后配置 点击ADD SERVER 可以选择vCenter也可以选择ESXI主机 输入vCenter的用户名和密码 点击 ...

  10. STM32点亮闪烁LED灯

    详解请看其他博客: http://www.cnblogs.com/whik/p/6672730.html http://www.51hei.com/bbs/dpj-38605-1.html /*本程序 ...