跳转至

Java 中 substring 方法的全面解析

简介

在 Java 编程里,substring 方法是处理字符串时极为常用的工具。它允许开发者从一个字符串中提取部分内容,以满足各种数据处理和业务需求。本文将深入剖析 substring 方法的基础概念、使用方式、常见应用场景以及最佳实践,助力读者熟练且高效地运用该方法。

目录

  1. 基础概念
  2. 使用方法
  3. 常见实践
  4. 最佳实践
  5. 小结
  6. 参考资料

基础概念

substring 方法属于 String 类,其主要功能是从一个字符串中提取子字符串。在 Java 里,String 类提供了两种形式的 substring 方法: - public String substring(int beginIndex):此方法会返回一个新的字符串,该字符串从指定的 beginIndex 位置开始,直至原字符串的末尾。 - public String substring(int beginIndex, int endIndex):此方法同样返回一个新的字符串,不过它是从 beginIndex 位置开始,到 endIndex - 1 位置结束。

使用方法

1. substring(int beginIndex)

public class SubstringExample1 {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 从索引 7 开始提取子字符串
        String subStr = str.substring(7);
        System.out.println(subStr); 
    }
}

在上述代码中,substring(7) 从索引 7 开始提取子字符串,输出结果为 World!

2. substring(int beginIndex, int endIndex)

public class SubstringExample2 {
    public static void main(String[] args) {
        String str = "Hello, World!";
        // 从索引 0 开始,到索引 5 结束(不包含索引 5)提取子字符串
        String subStr = str.substring(0, 5);
        System.out.println(subStr); 
    }
}

在这段代码中,substring(0, 5) 从索引 0 开始,到索引 5 结束(不包含索引 5)提取子字符串,输出结果为 Hello

常见实践

1. 提取文件扩展名

public class FileExtensionExample {
    public static void main(String[] args) {
        String fileName = "example.txt";
        int dotIndex = fileName.lastIndexOf('.');
        if (dotIndex != -1) {
            String extension = fileName.substring(dotIndex + 1);
            System.out.println("文件扩展名: " + extension);
        }
    }
}

上述代码通过 lastIndexOf 方法找到文件名中最后一个点的位置,然后使用 substring 方法提取文件扩展名。

2. 截取 URL 中的域名

public class DomainNameExample {
    public static void main(String[] args) {
        String url = "https://www.example.com/path/to/page";
        int startIndex = url.indexOf("//") + 2;
        int endIndex = url.indexOf('/', startIndex);
        if (endIndex == -1) {
            endIndex = url.length();
        }
        String domain = url.substring(startIndex, endIndex);
        System.out.println("域名: " + domain);
    }
}

此代码先找到 // 之后的位置,再找到下一个 / 的位置,最后使用 substring 方法截取域名。

最佳实践

1. 边界检查

在使用 substring 方法时,要确保 beginIndexendIndex 在有效范围内,避免抛出 StringIndexOutOfBoundsException 异常。

public class BoundaryCheckExample {
    public static String safeSubstring(String str, int beginIndex, int endIndex) {
        if (str == null) {
            return null;
        }
        if (beginIndex < 0) {
            beginIndex = 0;
        }
        if (endIndex > str.length()) {
            endIndex = str.length();
        }
        if (beginIndex > endIndex) {
            return "";
        }
        return str.substring(beginIndex, endIndex);
    }

    public static void main(String[] args) {
        String str = "Hello, World!";
        String subStr = safeSubstring(str, -1, 100);
        System.out.println(subStr); 
    }
}

2. 避免频繁使用 substring

substring 方法会创建新的字符串对象,频繁使用可能会导致内存开销过大。若需要多次提取子字符串,可考虑使用 StringBuilderStringBuffer

小结

substring 方法是 Java 中处理字符串的重要工具,它能帮助开发者轻松提取所需的子字符串。在使用时,要注意 beginIndexendIndex 的范围,避免越界异常。同时,为了减少内存开销,应避免频繁使用该方法。通过掌握 substring 方法的基础概念、使用方法和最佳实践,开发者能更高效地处理字符串操作。

参考资料