在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. 【Android】Android处理Home键方法小结

    实验几次之后(android4.1 和android4.2)发现在单个的activity里面有以下几个方法可以使用: 方法1:onSaveInstanceState方法 下面这个方法可以处理home的 ...

  2. BZOJ3230 相似子串 字符串 SA ST表

    原文链接http://www.cnblogs.com/zhouzhendong/p/9033092.html 题目传送门 - BZOJ3230 题意 给定字符串$s$.长度为$n$. 现在有$Q$组询 ...

  3. systemd创建自定义服务(Ubuntu)

    /lib/systemd/system下创建test.service文件 vim /lib/systemd/system/test.service [Unit] Description=test [S ...

  4. IdentityServer4.AccessTokenValidation

    IdentityServer4.AccessTokenValidation Authentication handler for ASP.NET Core 2 that allows acceptin ...

  5. URL简介

    一般来说,http请求都会和URL地址有关,那么今天就来说说URL的组成部分. 实例:http://192.168.1.12/phpwind/searcher.php?keyword=phpwind& ...

  6. Painting the Fence Gym - 101911E(构造)

    There is a beautiful fence near Monocarp's house. The fence consists of nn planks numbered from left ...

  7. 关于pycharm中安装第三方库时报错的解决办法(一)

    记录自己的生活!   一.事发背景 在pycharm中直接安装第三方库时因为版本问题总是无法安装成功,事情不大,但是很重要.   二.经过 最开始我自己电脑上安装了Python3.6和Python2. ...

  8. 打印星星 - Python

    打印星星是经典面试题目,考察流程控制中的循环和条件.本文对相关方法进行总结. 到的方法只要有(1)嵌套循环(2)center(3)format(^)(4)字符串乘法 # -*- coding:utf- ...

  9. 我与Vuex的第一次邂逅

    new Vue({ // state data () { return { count: 0 } }, // view template: ` <div>{{ count }}</d ...

  10. Jenkins环境搭建(1)-下载与安装

    Jenkins简介 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,它是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术. Jenk ...