// Optimise 1 character casefinal char sep = separatorChars.charAt(0);while (i < len) {if (str.charAt(i) == sep) { // 直接比较...
【使用 StringUtils.split 的坑】3. 分隔符为字符串
总计逻辑同上,只是判断逻辑变为包含判断 。
// standard casewhile (i < len) {if (separatorChars.indexOf(str.charAt(i)) >= 0) { // 包含判断if (match || preserveAllTokens) {
如何解决?1. 使用 splitByWholeSeparator
方法 。
我们想要的是按整个字符串分割,StringUtils 工具类中已经存在具体的实现了,使用 splitByWholeSeparator
方法 。
String str = "aabbccdd";String[] resultArray = StringUtils.splitByWholeSeparator(str, "bc");for (String s : resultArray) {System.out.println(s);}// 输出aabcdd
2. 使用 Google Guava 工具库
关于 Guava 工具库的使用,之前也写过一篇文章,可以参考:Guava - 拯救垃圾代码
String str = "aabbccdd";Iterable<String> iterable = Splitter.on("bc").omitEmptyStrings() // 忽略空值.trimResults() // 过滤结果中的空白.split(str);iterable.forEach(System.out::println);// 输出aabcdd
3. JDK String.split 方法
使用 String 中的 split 方法可以实现想要效果 。
String str = "aabbccdd";String[] res = str.split("bc");for (String re : res) {System.out.println(re);}// 输出aabcdd
但是 String 的 split 方法也有一些坑,比如下面的输出结果 。
String str = ",a,,b,";String[] splitArr = str.split(",");Arrays.stream(splitArr).forEach(System.out::println);// 输出ab
开头的逗号,
前出现了空格,末尾的逗号,
后却没有空格 。
一如既往,文章中代码存放在 Github.com/niumoo/javaNotes.
<完>
文章持续更新,可以微信搜一搜「 程序猿阿朗」或访问「程序猿阿朗博客 」第一时间阅读 。本文 Github.com/niumoo/JavaNotes 已经收录,有很多知识点和系列文章 , 欢迎Star 。
推荐阅读
- 书名号使用方法 书名号用法
- Java Timer使用介绍
- lol手游戏命师的大招怎么使用(lol手游技能释放技巧)
- SpringBoot 常用注解的原理和使用
- 眼霜的正确使用顺序,眼霜的正确使用方法
- 漫步者funbuds怎么配对_漫步者funbuds使用说明
- 四 【单片机入门】应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用
- 含源码 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别
- 【日志系统】Loki日志监控 - 入门初体验
- 华为watch3可以使用微信吗_华为watch3有微信吗