.Net转Java.06.字符串的split的区别
在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的区别的更多相关文章
- Java空字符串与null的区别和判断字符串是否为空的方法
Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...
- Java 可变字符串StringBuilder/StringBuffer的区别
public class StringBuilder_and_StringBuffer { private static long SystemTime(){ return System.curren ...
- java中空字符串、null的区别
String 的null,或者赋值为"",有什么区别? 废话少说,上代码: public class EmptyAndNull { /** * @param args */ pub ...
- Java-Runoob-高级教程-实例-字符串:06. Java 实例 - 字符串查找
ylbtech-Java-Runoob-高级教程-实例-字符串:06. Java 实例 - 字符串查找 1.返回顶部 1. Java 实例 - 字符串搜索 Java 实例 以下实例使用了 Strin ...
- java String字符串
五.java数据类型之String(字符串) CreateTime--2017年7月21日16:17:45 Author:Marydon (一)数据格式 (二)初始化 // 方式一 String ...
- java截取字符串中的数字
java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...
- Java:字符串类String的功能介绍
在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
- Java之字符串String,StringBuffer,StringBuilder
String类: String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明.在Java中用String类的构造方法来创建字符串变量. 声明字符串: ...
随机推荐
- P1012 拼数 字符串
题目描述 设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:34331213 ...
- day64 url用法以及django的路由系统
此篇博客是以备后查的,用到的时候记得过来查找即可! 路由系统:就是我们的django项目创建的时候自带的那个urls.py 它本身里面是映射的对应关系,一个大的列表里面,一个个元祖,元祖里面是url或 ...
- VS项目启动后 提示ID为*******的进程当前未运行
就是VS2015中的这种问题,启动调试时,右下角根本没有IISPress图标出现.我的工程是因为突然停电,就再也调试不了了! 解决办法: 用文本编辑器打开Web项目下的{X}.csproj文件,然后查 ...
- TensorFlow图像预处理-函数
更多的基本的API请参看TensorFlow中文社区:http://www.tensorfly.cn/tfdoc/api_docs/python/array_ops.html 下面是实验的代码,可以参 ...
- 【LeetCode算法-14】Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. If there is n ...
- C#为什么要多线程开发(一)
首先说下多线程出现的原因: 为了解决负载均衡问题,充分利用CPU资源.为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.为了处理大量的IO操作时或处理的情况需要花费大量的时间等等 ...
- C#Stopwatch的简单计时zz
Stopwatch 类 命名空间:System.Diagnostics.Stopwatch 实例化:Stopwatch getTime=new Stopwatch(); 开始计时:getTime.St ...
- RMQ问题 [luogu 3865]
原题地址 ST表模板题,尝试用单点修改线段树. 原本以为线段树会被卡掉,但是还是险过了.实践证明,快速读入很有用. #include<bits/stdc++.h> using namesp ...
- C - Rikka with Badminton --- HDU 6425 快速幂加组合数学
---恢复内容开始--- 题目链接: https://vjudge.net/problem/1812693/origin 这题的mod运算很恶心,真的... 本题有正反两个思路,一个是正面求解其不能成 ...
- QtQuick自定义主题以及控件样式指引
自定义控件样式 请在Qt帮助索引中输入Customizing a Control进行查看 不过实际用下来感觉除非你想自己实现一套效果复杂的UI或是创造一个全新控件,比如:给UI添加模糊.虚化等Shad ...