基础(一)之java分割字符串
split()方法
split方法本质上是使用正则表达式来进行切割的,所以我们在使用他的时候对于像:|
这种转义字符进行切割的时候就出现问题了:
StringTokenizer
StringTokenizer类是一个较偏僻的历史留下来的兼容类。特点是不支持正则表达式,也就不存在转义字符的问题,但是本质上是只支持单字符分割的
1 2 3 4 5 6 | String str = "1,2,3|4,5,6|7,8,9" ; StringTokenizer st = new StringTokenizer(str , ",," , false ); //"|"); while (st.hasMoreTokens()) { System. out .println(st.nextToken()); } |
构造
1 2 | StringTokenizer(String str, String delimiters) StringTokenizer(String str, String delimiters, boolean delimitersAreToken) |
其中第三个boolean delimitersAreToken
是是否返回分隔符也是token,启用后
substring
最精确的,就是操作表较繁琐,效率比上面两个都要低
这个方法会过滤掉空值和空串数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static List<String> getListByDelimiter(String str , String delimiter) { int index; String tempString; List<String> resList = new LinkedList<>(); while ((index = str.indexOf(delimiter)) >= 0) { tempString = str.substring(0, index); if (tempString!= null && !tempString.trim(). equals ( "" )) resList.add(tempString); str = str.substring(index + delimiter.length()); if (str.indexOf(delimiter)<0) { if (str!= null && !str.trim(). equals ( "" )) resList.add(str); } } return resList; } public static void main(String[] args) {s for (String s : getListByDelimiter(str, "|" )) { System. out .println(s); } } |
不过滤数据的
当我们去掉两个if判断后:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static List<String> getListByDelimiter(String str , String delimiter) { int index; String tempString; List<String> resList = new LinkedList<>(); while ((index = str.indexOf(delimiter)) >= 0) { tempString = str.substring(0, index); resList.add(tempString); str = str.substring(index + delimiter.length()); if (str.indexOf(delimiter)<0) { resList.add(str); } } return resList; } |
特殊符号进行分割
1.使用 "\" 分隔
1 | 切割时需写成 split( "\\\\" ); |
2.使用 "|" 分隔
1 | 切割时需写成split( "\\|" ); |
3.使用 "||" 分隔
1 | 切割时需写成split( "\\|\\|" ) |
4. 使用 " “ " 分隔
1 | 切割时需写成split( "\"" ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!