java String.split()函数的用法分析
2016-05-14 11:00
537 查看
转载自:java String.split()函数的用法分析
在java.lang包中有String.split()方法的原型是:
public String[] split(String regex, int limit)
split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组。在其中每个出现regex的位置都要进行分解。
需要注意是有以下几点:
(1)regex是可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
(2)limit也是可选项。该值用来限制返回数组中的元素个数。
(3)要注意转义字符:“.”和“|”都是转义字符,必须得加"\\"。同理:*和+也是如此的。
如果用“.”作为分隔的话,必须是如下写法:
String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
如果用“|”作为分隔的话,必须是如下写法:
String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
(4)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acountId=? and act_id =? or extra=?”,把三个都分隔出来,可以用
String.split("and|or");
(5)split函数结果与regex密切相关,常见的几种情况如下所示:
运行结果为:
"a-b" 分割后的长度为:2,分割后的结果为: "a" "b"
"a-b-" 分割后的长度为:2,分割后的结果为: "a" "b"
"-a-b" 分割后的长度为:3,分割后的结果为: "" "a" "b"
"-a-b-" 分割后的长度为:3,分割后的结果为: "" "a" "b"
"a" 分割后的长度为:1,分割后的结果为: "a"
"-" 分割后的长度为:0,分割后的结果为:
"--" 分割后的长度为:0,分割后的结果为:
"" 分割后的长度为:1,分割后的结果为: ""
由此可以得出来:
当字符串只包含分隔符时,返回数组没有元素;
当字符串不包含分隔符时,返回数组只包含一个元素(该字符串本身);
字符串最尾部出现的分隔符可以看成不存在,不影响字符串的分隔;
字符串最前端出现的分隔符将分隔出一个空字符串以及剩下的部分的正常分隔;
================================= 补充 ===================================
1)当不使用"[]"将可能的分隔符的连接起来时(如分隔符为+,-,则为 [+,-]):
由于split函数的regex参数是一个正则表达式,当字符串的分隔符为为正则表达式中的
特殊字符时(?,+,-,$,^,(,),[,],{,}),需要进行转义(如?需要改为\\?)
如果含有多个分隔符,则需要使用|进行连接,如当分隔符为+和-时,则regex参数的值为+|-
2)当使用"[]"将可能的分隔符的连接起来时(如分隔符为+,-,则为 [+,-]):
直接将分隔符放入"[]"中即可,不需要在前面添加"\\"来进行转义,因为"[]"内的字符java正则表达式
只将其作为一般字符,不再作为特殊字符
例:"a?c+d$".split("[?,+,$]") 分割后的结果为: "a" "c" "d"
在java.lang包中有String.split()方法的原型是:
public String[] split(String regex, int limit)
split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组。在其中每个出现regex的位置都要进行分解。
需要注意是有以下几点:
(1)regex是可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
(2)limit也是可选项。该值用来限制返回数组中的元素个数。
(3)要注意转义字符:“.”和“|”都是转义字符,必须得加"\\"。同理:*和+也是如此的。
如果用“.”作为分隔的话,必须是如下写法:
String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
如果用“|”作为分隔的话,必须是如下写法:
String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
(4)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acountId=? and act_id =? or extra=?”,把三个都分隔出来,可以用
String.split("and|or");
(5)split函数结果与regex密切相关,常见的几种情况如下所示:
public class SplitTest { public static void main(String[] args) { String str1 = "a-b"; String str2 = "a-b-"; String str3 = "-a-b"; String str4 = "-a-b-"; String str5 = "a"; String str6 = "-"; String str7 = "--"; String str8 = ""; split(str1); split(str2); split(str3); split(str4); split(str5); split(str6); split(str7); split(str8); } public static void split(String demo){ String[] array = demo.split("-"); int len = array.length; System.out.print("\"" + demo + "\" 分割后的长度为:" + len); if(len >= 0) { System.out.print(",分割后的结果为:"); for(int i=0; i<len; i++) { System.out.print(" \""+array[i]+"\""); } } System.out.println(); } }
运行结果为:
"a-b" 分割后的长度为:2,分割后的结果为: "a" "b"
"a-b-" 分割后的长度为:2,分割后的结果为: "a" "b"
"-a-b" 分割后的长度为:3,分割后的结果为: "" "a" "b"
"-a-b-" 分割后的长度为:3,分割后的结果为: "" "a" "b"
"a" 分割后的长度为:1,分割后的结果为: "a"
"-" 分割后的长度为:0,分割后的结果为:
"--" 分割后的长度为:0,分割后的结果为:
"" 分割后的长度为:1,分割后的结果为: ""
由此可以得出来:
当字符串只包含分隔符时,返回数组没有元素;
当字符串不包含分隔符时,返回数组只包含一个元素(该字符串本身);
字符串最尾部出现的分隔符可以看成不存在,不影响字符串的分隔;
字符串最前端出现的分隔符将分隔出一个空字符串以及剩下的部分的正常分隔;
================================= 补充 ===================================
1)当不使用"[]"将可能的分隔符的连接起来时(如分隔符为+,-,则为 [+,-]):
由于split函数的regex参数是一个正则表达式,当字符串的分隔符为为正则表达式中的
特殊字符时(?,+,-,$,^,(,),[,],{,}),需要进行转义(如?需要改为\\?)
如果含有多个分隔符,则需要使用|进行连接,如当分隔符为+和-时,则regex参数的值为+|-
2)当使用"[]"将可能的分隔符的连接起来时(如分隔符为+,-,则为 [+,-]):
直接将分隔符放入"[]"中即可,不需要在前面添加"\\"来进行转义,因为"[]"内的字符java正则表达式
只将其作为一般字符,不再作为特殊字符
例:"a?c+d$".split("[?,+,$]") 分割后的结果为: "a" "c" "d"
相关文章推荐
- Java Memory Model
- java多线程系列4-线程池
- 个人学习心得笔记之java中"=="
- java-反射初学(2)
- java中包及修饰符的研究与应用
- Eclipse 插件安装方法和插件加载失败解决办法
- Java 回调机制
- IDEA Java/Scala混合项目maven打包
- JAVA-反射学习(3)
- Java-split函数-分割字符串
- [开发工具]Java开发常用的在线工具
- Java设计模式(二)策略模式详解
- SpringMVC +Spring+ SpringJDBC 整合 教程
- eclipse错误
- java中的switch的参数类型
- java多线程系列3-线程同步
- java md5,md2,md4 加密算法
- volatile、native、synchronized
- java并发编程---线程池
- JAVA-勇者斗恶龙-The Dragon of Loowater,Uva 11292-排序后贪心