.Net转Java.06.字符串的split的区别
2018-01-11 22:17
295 查看
在Java遇到了将类似“1|2|3|4”的字符串分隔为数组的功能
这种问题能难倒有着十多年开发经验的的.NET码农?
结果,出来的数组是这个鬼样子 1,|,2,|,3
仔细看看split传入的参数名,regex,是正则表达式,恍然大悟,要转义正则表达式……
问题解决后,继续手贱研究这个split,寻找.NET里边我的最爱选项 StringSplitOptions.RemoveEmptyEntries 在哪里?
索性做个试验
难倒默认带RemoveEmptyEntries功能?
然后再试。。。
这结果算什么鬼???舍尾法的RemoveEmptyEntries,自动舍弃尾部空元素?跟.NET的老码农找不到频道啊。。。
好吧,就算如此,中间的空元素我自己可以过滤,如果我不想舍弃尾部的空元素可又咋整?
百度了半天,找到了解决方案 ,如果想保留尾部空元素,要传入limit=-1
好吧,我继续研究第二个参数limit
从字面意思,应该是限制split返回数组元素的个数,
这个limit的含义倒是跟.NET的count参数非常类似
如果limit或者count=n,表示匹配的次数为n-1
看到这里,自以为都搞懂了
结果下面测试又让我郁闷了
这结果我是真想12315投诉了。。。
这种问题能难倒有着十多年开发经验的的.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[] { "|" }, 2, 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投诉了。。。
相关文章推荐
- Java中用字符串常量赋值和使用new构造String对象的区别
- [Java][JavaScript]字符串数组与字符串之间的互转(join/split)
- java 字符串split有很多坑,使用时请小心!!
- 【Java】字符串三种空字符串null、new String()、""的区别
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别
- java再用到split截取字符串"_"
- Java split()方法实现切割字符串
- java截取字符串,截串,substring和split,分割字母和数字,正则缝隙
- java截取字符串,截串,substring和split,分割字母和数字,正则缝隙
- java截取字符串方式:split()与subString()方法
- java 中用split分割字符串,最后的空格等不被拆分。
- Java中字符串split() 的使用方法.没你想的那么简单
- java 字符串初始化=“” 和=null的区别
- Java 字符串Split方法的一个坑
- Java:split分割字符串常遇到的问题
- Java 基础字符串之StringBuilder和StringBuffer区别
- java字符串——字符串的分割split()
- 关于Java中split方法对空字符串处理问题
- java 字符串初始化=“” 和=null的区别
- 关于PHP、JAVA、.NET这三种技术的区别