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

本文探讨了Java中使用String自带split方法分割字符串时遇到的问题,即分割产生的空字符串不会被计入结果数组,导致数组越界异常。文章提供了两种解决方案:一是通过指定split方法的第二个参数来包含空字符串;二是使用org.apache.commons.lang.StringUtils的splitPreserveAllTokens方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]

 

### Python 2 中 `string.split()` 方法的使用 在 Python 2 中,`string.split()` 是一种用于拆分字符串的方法。它可以通过指定分隔符来将字符串切割成多个部分,并返回一个包含这些部分的列表[^1]。 以下是具体的使用说明以及示例: #### 基本语法 ```python str.split([sep[, maxsplit]]) ``` - **参数解释**: - `sep`: 可选参数,表示分隔符,默认为白字符(包括格、制表符 `\t` 和换行符 `\n`)。 - `maxsplit`: 可选参数,表示最大分割次数。如果未提供,则会尽可能多地分割字符串。 #### 示例代码 以下是一些常见的用法示例: ##### 示例 1:默认按白字符分割 当不传递任何参数时,`split()` 默认会按照白字符进行分割。 ```python text = "This is a test" words = text.split() print(words) # 输出: ['This', 'is', 'a', 'test'] ``` ##### 示例 2:自定义分隔符 可以传入特定的分隔符来进行字符串分割。 ```python data = "apple,banana,cherry" fruits = data.split(",") print(fruits) # 输出: ['apple', 'banana', 'cherry'] ``` ##### 示例 3:设置最大分割次数 通过指定 `maxsplit` 参数,控制分割的最大次数。 ```python sentence = "one two three four" parts = sentence.split(" ", 2) print(parts) # 输出: ['one', 'two', 'three four'] ``` ##### 示例 4:处理多字符分隔符 虽然 `split()` 主要支持单个字符作为分隔符,但在某些情况下也可以实现复杂分隔逻辑。 ```python my_string = "Hello...World! How are you?" result = my_string.split("...") print(result) # 输出: ['Hello', 'World! How are you?'] ``` 需要注意的是,在更复杂的场景下,可能需要用到正则表达式的 `re.split()` 来替代标准的 `split()`[^3]。 --- #### 注意事项 1. 如果字符串中存在连续的分隔符,它们会被视为单一的分隔符。 2. 当前版本讨论基于 Python 2 的行为;尽管其功能与 Python 3 类似,但由于 Python 2 已停止维护,建议升级到 Python 3 进行开发[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值