Java字符串分割案例如何实操

wen java案例 21

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
  1. 正则转义:使用转义特殊字符(如、、等)
  2. 性能优化:大量重复分割时使用Pattern.compile()预编译
  3. 空字符串处理:连续分隔符会产生空字符串,注意处理
  4. 分割限制:使用split(regex, limit)控制分割次数
  5. 特殊场景:需要保留分隔符时使用正向后顾/前瞻

通过这些案例,你可以掌握Java字符串分割的各种实际应用场景和技巧。

Java字符串分割案例如何实操

抱歉,评论功能暂时关闭!