String.split() 分隔符不能保存后面的空字符串问题

时间:2023-01-03 19:15:42

String 自带的Split 分割字符串类中不会把分割字符串后的空字符串添加到数组当中,

 

例1: 

    String[] str = msg.split("000|111|222||") 

    进行分割后字符串的长度为2,只能得到str[0],str[1],str[2],后面的str[3],str[4]是不存在的,

如果直接访问str[3],str[4]会发生以下错误:

    java.lang.ArrayIndexOutOfBoundsException

 

解决方法: 

   String[] str = msg.split("000|111|222||",4);//4:指定分隔的次数,这样就可以把控字符串也传入数组里面 

 

 (网上找的方法,没测试过)

解决问题:使用org.apache.commons.lang.StringUtils.splitPreserveAllTokens 方法

                     String 操作类  commons-lang.jar

 

 

例2: 

    String[] str = msg.split("000|111|222||333") 进行分割后字符串的长度为4,可以得到str[0],str[1],str[2],str[3],str[4]