比如:aa bb [cc dd ee] ff
分割成
aa
bb
[cc dd ee]
ff
4条回答 默认 最新
- _Mr.Tree 2021-11-24 11:03关注
不存在嵌套[],例如:aa [bb [cc dd]] ee
不存在类似左右不匹配,例如:aa bb [cc dd ee和aa bb cc] dd ee就这样。。。
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class Test { public static void main(String[] args) throws Exception { String[] split = split("aa bb [cc dd ee] [ff gg] ee", " "); for(String s : split) System.out.println(s); } private static String[] split(String str, String regex) throws Exception { List<String> resultList = new ArrayList<>(); if(str == null || str.isEmpty()) return resultList.toArray(new String[0]); String[] split = str.split(regex); Queue<String> queue = new LinkedList<>(); for(String s: split){ if(s.charAt(0) == '[' && s.charAt(s.length() - 1) == ']'){ resultList.add(s); continue; } if(s.charAt(0) == '['){ queue.offer(s); continue; } if(s.charAt(s.length() - 1) == ']'){ if(queue.isEmpty()) throw new Exception("格式不对"); StringBuilder sb = new StringBuilder(); while(!queue.isEmpty()){ sb.append(queue.poll()); sb.append(" "); } sb.append(s); resultList.add(sb.toString()); continue; } if(!queue.isEmpty()) queue.offer(s); else resultList.add(s); } return resultList.toArray(new String[0]); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效