JAVA中String的split

在项目中用到了字符串分割,原以为直接用split就没什么问题。实际上却不是,做个笔记。


split可以按指定的表达式进行分割,得到的是一个数组。而实际应用时需要注意,得到的并不一定是我想要的个数。


正常情况下:star|@|star2|@|star3|@|,当我按|@|进行分割时,得到的是长度为3的数组,值分别是star,star2,star3。

如果需要分割的字符串是:star|@|star2|@||@|,得到的是字符串长度为2,值分别是star,star2。而我实际上想得到的是长度为3的数组,第三个值为"",

那么为什么第三个“”不见了?


查看了下split的源代码。split中,当我需要得到的数组长度没有设定时,默认将最后连续的""去除,也就是说,最后的字符串无论跟了多少个连续的|@|,都是会被去除的。


知道了原因之后,就可以解决了,在star|@|star2|@||@| 的末尾加上任意字符串,比如end,得到的将是长度为4的数组,我只需要拿前三位即可。

### Java 中字符串分割方法的用法 在 Java 中,`split()` 方法用于按照指定的分隔符将字符串拆分为子字符串数组。以下是 `split()` 方法的具体说明以及一些示例。 #### 基本语法 ```java public String[] split(String regex) ``` 参数 `regex` 是一个正则表达式,表示用来分割字符串的标准模式[^1]。 返回值是一个 `String[]` 类型的数组,其中包含了按分隔符划分后的各个部分。 --- #### 示例 1:基本分割操作 下面展示了一个简单的例子,演示如何通过连字符 `-` 将字符串分割成多个部分。 ```java public class TrialClass { public static void main(String[] args) { String temp = "004-034556"; String[] arrString = temp.split("-"); for (String splitString : arrString) { System.out.println(splitString); } } } ``` 运行结果: ``` 004 034556 ``` 此代码片段展示了如何利用 `split()` 方法基于特定分隔符(此处为 `-`)来分解字符串[^1]。 --- #### 示例 2:使用空白字符作为分隔符 当需要依据空格或其他空白字符进行分割时,可以传递 `\s+` 正则表达式给 `split()` 方法。 ```java public class WhitespaceSplitExample { public static void main(String[] args) { String sentence = "This is an example sentence."; String[] words = sentence.split("\\s+"); for (int i = 0; i < words.length; i++) { System.out.println("Word " + (i + 1) + ": " + words[i]); } } } ``` 运行结果: ``` Word 1: This Word 2: is Word 3: an Word 4: example Word 5: sentence. ``` 这种做法适用于处理自然语言中的单词分割任务[^2]。 --- #### 示例 3:限制分割次数 可以通过重载版本的 `split(regex, limit)` 来控制最大分割数量。 ```java public class LimitSplitExample { public static void main(String[] args) { String data = "apple-banana-orange-grape"; String[] fruitsLimited = data.split("-", 2); // 只允许两次分割 for (String fruit : fruitsLimited) { System.out.println(fruit); } } } ``` 运行结果: ``` apple banana-orange-grape ``` 在此情况下,即使原始字符串中有更多匹配项,也仅执行前两步切割动作[^1]。 --- #### 注意事项 尽管 `split()` 提供了强大的功能,但在实际应用过程中需要注意某些细节问题。例如,在早期版本的 JDK 中存在关于字符串常量池管理方面的局限性;不过自 Java 7 起已有所改善[^3]。另外还要留意整数运算特性可能带来的意外行为——比如 `/` 运算符遵循截断而非取近似原则[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值