基础(一)之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("\"")

 

posted @   永远爱芒果  阅读(1855)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示