Java字符串分割实操案例
基础split()方法使用
public class StringSplitDemo {
public static void main(String[] args) {
// 案例1:按逗号分割
String str1 = "苹果,香蕉,橙子,葡萄";
String[] fruits = str1.split(",");
System.out.println("按逗号分割:");
for (String fruit : fruits) {
System.out.println(" " + fruit);
}
// 案例2:按空格分割
String str2 = "Java Python C++ JavaScript";
String[] languages = str2.split(" ");
System.out.println("按空格分割:");
for (String lang : languages) {
System.out.println(" " + lang);
}
}
}
多种分割方式实战
public class SplitAdvancedDemo {
public static void main(String[] args) {
// 案例3:按多个分隔符分割
String str3 = "张三,男;25岁:北京|工程师";
String[] parts = str3.split("[,;:|]"); // 正则表达式匹配多个分隔符
System.out.println("按多个分隔符分割:");
for (String part : parts) {
System.out.println(" " + part);
}
// 案例4:限制分割次数
String str4 = "A,B,C,D,E,F";
String[] limited = str4.split(",", 3); // 最多分成3部分
System.out.println("\n限制分割次数(3次):");
for (String s : limited) {
System.out.println(" " + s);
}
// 案例5:处理空字符串
String str5 = "1,,2,,,3"; // 包含连续分隔符
String[] result = str5.split(",");
System.out.println("\n处理连续分隔符:");
for (String s : result) {
System.out.println(" '" + s + "'");
}
}
}
实际业务场景案例
public class BusinessSplitDemo {
public static void main(String[] args) {
// 案例6:解析URL参数
String url = "http://example.com/api?name=张三&age=25&city=北京";
String[] params = url.split("\\?")[1].split("&");
System.out.println("URL参数解析:");
for (String param : params) {
String[] kv = param.split("=");
System.out.println(" " + kv[0] + " = " + kv[1]);
}
// 案例7:CSV文件解析
String csvLine = "1001,张三,25,北京,工程师,15000";
String[] employee = csvLine.split(",");
System.out.println("\n员工信息:");
System.out.println(" ID: " + employee[0]);
System.out.println(" 姓名: " + employee[1]);
System.out.println(" 年龄: " + employee[2]);
System.out.println(" 城市: " + employee[3]);
System.out.println(" 职位: " + employee[4]);
System.out.println(" 薪资: " + employee[5]);
// 案例8:日志解析
String logEntry = "2024-01-15 10:30:45 [ERROR] 用户登录失败 - 用户名:admin";
String[] logParts = logEntry.split(" ");
System.out.println("\n日志解析:");
System.out.println(" 日期: " + logParts[0]);
System.out.println(" 时间: " + logParts[1]);
System.out.println(" 级别: " + logParts[2].replaceAll("[\\[\\]]", ""));
System.out.println(" 消息: " + logEntry.substring(logEntry.indexOf("]") + 2));
}
}
正则表达式高级分割
public class RegexSplitDemo {
public static void main(String[] args) {
// 案例9:按数字分割
String str9 = "abc123def456ghi789";
String[] parts = str9.split("\\d+");
System.out.println("按数字分割:");
for (String part : parts) {
System.out.println(" " + part);
}
// 案例10:保留分隔符(使用正向后顾)
String str10 = "张三,李四,王五,赵六";
String[] names = str10.split("(?<=,)"); // 在逗号后面分割但不消耗逗号
System.out.println("\n保留分隔符验证:");
for (String name : names) {
System.out.println(" " + name);
}
// 案例11:按空白字符和标点分割
String str11 = "Hello,World!How are you?I'm fine.";
String[] words = str11.split("[\\s,!.?]+");
System.out.println("\n按空白和标点分割:");
for (String word : words) {
System.out.println(" " + word);
}
}
}
性能优化与注意事项
public class SplitOptimizationDemo {
public static void main(String[] args) {
// 案例12:使用Pattern预编译(大量重复分割时)
String text = "a,b,c,d,e,f,g,h,i,j";
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(",");
long startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
String[] result = text.split(","); // 每次都要编译正则
}
long endTime = System.nanoTime();
System.out.println("不使用预编译耗时: " + (endTime - startTime) + "纳秒");
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
String[] result = pattern.split(text); // 使用预编译的Pattern
}
endTime = System.nanoTime();
System.out.println("使用预编译耗时: " + (endTime - startTime) + "纳秒");
// 案例13:处理特殊字符
String specialStr = "a.b.c.d"; // 点号是正则特殊字符
String[] dotParts = specialStr.split("\\."); // 需要转义
System.out.println("\n按点号分割:");
for (String part : dotParts) {
System.out.println(" " + part);
}
// 案例14:使用StringTokenizer(遗留类)
java.util.StringTokenizer st = new java.util.StringTokenizer("苹果 香蕉 橙子", " ");
System.out.println("\n使用StringTokenizer:");
while (st.hasMoreTokens()) {
System.out.println(" " + st.nextToken());
}
}
}
运行结果示例
按逗号分割:
苹果
香蕉
橙子
葡萄
按多个分隔符分割:
张三
男
25岁
北京
工程师
URL参数解析:
name = 张三
age = 25
city = 北京
员工信息:
ID: 1001
姓名: 张三
年龄: 25
城市: 北京
职位: 工程师
薪资: 15000
按数字分割:
abc
def
ghi
- 正则转义:使用转义特殊字符(如、、等)
- 性能优化:大量重复分割时使用
Pattern.compile()预编译 - 空字符串处理:连续分隔符会产生空字符串,注意处理
- 分割限制:使用
split(regex, limit)控制分割次数 - 特殊场景:需要保留分隔符时使用正向后顾/前瞻
通过这些案例,你可以掌握Java字符串分割的各种实际应用场景和技巧。

版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播