文章目录
鸣谢
https://blog.csdn.net/qq_41740883/article/details/111696866
https://www.cnblogs.com/xiaoxiaohui2015/p/5838674.html
一、syntax
split是极为常用的方法,注意的是:
1. args0不是普通string,是正则。在正则的规则中,*
^
|
等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\
或\\
加以转义。
2. args1(limit)
须知:
{1} limit为0时,次数无限制,结尾的所有空字符串都会丢弃
巨坑!!!:split在只有1个参数时,实际上调用的是split(regex,0)
,也就是说,会把后面的空串忽略掉
{2} limit > 0 时:只执行limit - 1次切割,后面全部算为1个元素。返回的数组长度为limit。结尾的所有空字符串都不会丢弃
@Test
public void demo1(){
//limit=3,切割2次,末尾会分割出一个""空字符串
String[] split = "abcb".split("b",3);
System.out.println(split.length); //数组长度是3
//split:{"a","c",""}
}
如果limit=1,limit - 1=0,则不执行切割
String[] split2 = "abc".split("b",1); //不切割
//split2:{"abc"}
{3} limit < 0 时,次数无限制,结尾的所有空字符串都不会丢弃
二、usage
1. 特殊情况有 *
^
:
|
.
\
$
(
)
。分割时需要在前面加2个\\
, 单\
做分割符时前面只需要加1个\
。@
和,
不需要转义
address.split("\\*");
String address="上海\上海市|闵行区\吴中路";
address.split("\\"); //如果以竖线为分隔符,则split的时候需要加上1个斜杠【\】进行转义
String address="上海|上海市|闵行区|吴中路";
address.split("\\|"); //如果以竖线为分隔符,则split的时候需要加上两个斜杠【\\】进行转义
2. $
、(
、)
也要添加两个\\
特殊处理,亲测,不加\\
会切割错误
3. 同时设置多个分隔符
\\
+ |
String address = "上海^上海市@闵行区#吴中路";
String[] splitAddress = address.split("\\^|@|#");
System.out.println(splitAddress[0] + "," + splitAddress[1] + "," + splitAddress[2] + "," + splitAddress[3]);
//上海,上海市,闵行区,吴中路
4.分隔符的特殊位置
一般分隔符都是在字符串中间,但是如果出现以下任意其一,该怎么分割?
{1}字符串开头有分隔符:将分隔出一个空字符串以及其余部分的正常分隔
{2}分隔符相互紧挨着:隔符之间也会分割出一个空字符串
{3}字符串最尾部有分割符:末尾会分割出一个空字符串
5.字符串只含有分隔符本身
limit=-1
limit=0时,空字符会被丢弃,返回空数组,长度为0