1. 主页 > 小妙招

Java截取字符串中间内容的3种方法:substring与split实例


基础问题解析

??什么是字符串中间内容截取???
在Java开发中,经常需要从包含特定结构的字符串(如"用户ID:A123456,有效期:2024-12-31")中提取中间的关键信息(如A123456)。这类操作的核心在于准确定位起始和结束标记,并通过字符串处理方法实现精准截取。

??为什么选择substring和split方法???
substring通过索引直接截取指定区间的字符,适合已知固定位置的场景;split利用分隔符拆分字符串为数组,适合动态或复杂分隔符的场景。两者结合能覆盖90%的中间截取需求。


场景问题与实战

??如何从带括号的文本中提取内容???
假设字符串为"订单号(OD20240520_001)已发货",需提取括号内的OD20240520_001

java复制
String str = "订单号(OD20240520_001)已发货";
int start = str.indexOf("(") + 1;  // 定位起始索引
int end = str.indexOf(")");        // 定位结束索引
String result = str.substring(start, end);  // 输出OD20240520_001

??如何处理多层分隔符的字符串???
例如从"数据1|数据2#数据3|数据4"中提取数据3

java复制
String str = "数据1|数据2#数据3|数据4";
String[] arr1 = str.split("#");    // 按#分割为["数据1|数据2", "数据3|数据4"]
String[] arr2 = arr1[1].split("\\|");  // 按|分割第二段,注意转义
String result = arr2[0];  // 输出数据3

??如何避免substring的索引越界问题???
在动态定位分隔符时,需校验索引的有效性:

java复制
String str = "动态内容:2024年";
int colonIndex = str.indexOf(":");
if (colonIndex != -1 && colonIndex + 1 < str.length()) {
    String result = str.substring(colonIndex + 1);
} else {
    System.out.println("分隔符不存在或索引越界");
}

解决方案与深度优化

??如果分隔符重复出现怎么办???
使用lastIndexOf定位最后一个匹配项。例如从"版本号:v1.0.0 发布日期:2024-05-20"提取日期:

java复制
String str = "版本号:v1.0.0 发布日期:2024-05-20";
int start = str.lastIndexOf(":") + 1;  // 定位最后一个冒号
String result = str.substring(start);  // 输出2024-05-20

??如果split遇到正则特殊字符如何处理???
*+.等正则符号需用Pattern.quote转义:

java复制
String str = "价格$19.99*数量3";
String[] arr = str.split(Pattern.quote("*"));  // 正确分割为["价格$19.99", "数量3"]

??如何提升截取代码的可维护性???
封装工具方法,统一处理异常和边界条件:

java复制
public static String extractMiddle(String str, String startMark, String endMark) {
    int start = str.indexOf(startMark) + startMark.length();
    int end = str.indexOf(endMark, start);  // 从start位置开始查找endMark
    return (start >=0 && end > start) ? str.substring(start, end) : "";
}
// 调用示例:extractMiddle("【紧急】ERROR_404:文件丢失", "【紧急】", ":")

总结

通过substring的索引精准定位和split的动态分割能力,开发者能高效处理字符串中间内容的截取需求。关键点在于??分隔符定位、索引校验??以及??正则表达式转义??,同时通过工具方法封装提升代码健壮性。实际开发中建议根据业务场景选择最优方案,并添加日志和异常处理机制。

本文由嘻道妙招独家原创,未经允许,严禁转载