网站首页 > java教程 正文
Java中,可以使用split()方法来拆分字符串。split()方法接受一个正则表达式作为参数,并根据该正则表达式将字符串拆分成多个子字符串数组。可以根据需要使用不同的正则表达式作为分隔符,例如空格、分号等等。
1、split()方法
split()方法是String类的一个方法,用于根据给定的正则表达式将字符串分割成子字符串数组。这个方法非常有用,特别是在需要解析和处理来自文件、用户输入或其他源的文本数据时。
public String[] split(String regex)根据匹配给定正则表达式的部分将字符串分割为子字符串数组。
public String[] split(String regex, int limit) 根据正则表达式分割字符串,但结果数组的长度不会超过limit。如果limit被设置为负数,则表示没有限制。
regex参数是正则达式,一般情况下,分割字符串参考字符串就行,不用考虑正则表达式。
例如,
public class Main {
public static void main(String[] args) {
String str= "boo:and:foo";
//输出[boo, and:foo]
System.out.println(java.util.Arrays.toString(str.split(":",2)));
//输出[boo, and, foo]
System.out.println(java.util.Arrays.toString(str.split(":",5)));
//输出[boo, and, foo]
System.out.println(java.util.Arrays.toString(str.split(":",-2)));
//输出[b, , :and:f, , ]
System.out.println(java.util.Arrays.toString(str.split("o",5)));
//输出[b, , :and:f, , ]
System.out.println(java.util.Arrays.toString(str.split("o",-2)));
//输出[b, , :and:f]
System.out.println(java.util.Arrays.toString(str.split("o",0)));
}
}
2、split()方法使用的特殊情况
split()方法是String类的一个方法,用于根据给定的正则表达式将字符串分割成子字符串数组。虽然这个方法很直接,但在使用特殊字符作为分隔符时,可能会遇到一些不直观的情况。这是因为split()方法的参数是一个正则表达式,而在正则表达式中,某些字符(如点.、星号*、加号+、问号?、反斜杠\、方括号[]、大括号{}和圆括号())具有特殊的含义,因此在使用这些特殊字符作为分隔符时需要特别小心。
1)分割拆分字符串进传入的参考字符串是正则表达式中的元字符
\ ^ $ . | ? * + ( [ {
如果字符串包含$ ,用$进行分割,例如,可以使用如下3种方法,
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String str= "boo$and$foo";
//使用正则表达式
System.out.println(java.util.Arrays.toString(str.split("[$]")));
//利用Pattern.quote()转义成普通字符
System.out.println(java.util.Arrays.toString(str.split(Pattern.quote("#34;))));
//通过\\进行转义
System.out.println(java.util.Arrays.toString(str.split("\\#34;)));
}
}
2)如果需要保留参考字符
例如,有个字符串"0431-87534433",分割拆分之后,"-"需要保留在子字符串中:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
//保留在后面子字符串中
String string1 = "0431-8753";
String[] parts1 = string1.split("(?<=-)");
//?<=:正则表达式,反向肯定预查
String part1 = parts1[0]; // 0431-
String part2 = parts1[1]; // 8753
System.out.println(part1);
System.out.println(part2);
//保留在前面子字符串中
String string2 = "0431-8753";
String[] parts2 = string2.split("(?=-)");
//?=:正则表达式,正向肯定预查
String part3 = parts2[0]; // 0431
String part4 = parts2[1]; // -8753
System.out.println(part3);
System.out.println(part4);
}
}
参考文档:https://www.cjavapy.com/article/69/
- 上一篇: Java中如何分割字符串?
- 下一篇: Java编程入门100例之二十四(字符串分割)
猜你喜欢
- 2024-11-18 「LeetCode」数组拆分Java题解
- 2024-11-18 「Java基础知识」string是什么?
- 2024-11-18 Java设置字符串的首字母为大写
- 2024-11-18 100个Java工具类之2:字符串之多种个性化格式处理
- 2024-11-18 LeetCode力扣官方题解|842将数组拆分成斐波那契序列
- 2024-11-18 JAVA之多级目录下查找文件中是否含有某个字符串功能实现
- 2024-11-18 从字符串拆分获取字符数组查看字符串是否有子字符串contains方法
- 2024-11-18 Java—Throwing Exceptions
- 2024-11-18 JAVA String类
- 2024-11-18 JAVA系列之:String的特点是什么?它有哪些重要的方法?
你 发表评论:
欢迎- 最近发表
-
- 搞趣网:我的世界全新皮肤包原始居民下载地址
- 我的世界拔刀剑MOD下载(我的世界拔刀剑mod下载国际版)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- 一些可以显著提高大型 Java 项目启动速度的尝试
- 常见的java敏感异常介绍(java 常见的异常)
- Java 开发者必看!三招实现外部 Jar 包动态加载(含热更新方案)
- Java JAR 启动内存参数配置指南:从基础设置到性能优化
- 对Spring MVC接口进行Mock测试(springmvc对外接口)
- 还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS
- 干掉OpenFeign,SpringBoot 3.0 自带的 HTTP 客户端真香!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)