【Java】Java 的 substring() 方法详解


我最爱的那首歌最爱的angel
我到什么时候才能遇见我的angel
我最爱的那首歌最爱的angel
我不是王子也会拥有我的angel
                     🎵 张杰《云中的angel》


在 Java 编程中,字符串(String)操作是非常常见的任务之一。为了方便开发者操作字符串,Java 提供了许多内置方法,其中 substring() 是一个非常强大且常用的方法。substring() 方法用于提取字符串中的一个子字符串,可以根据需要获取字符串的任意部分。

1. substring() 方法的概述

substring() 方法属于 String 类,用于从字符串中提取一个子字符串。它有两个常用的重载版本:

String substring(int beginIndex)
String substring(int beginIndex, int endIndex)

2. substring() 方法的参数与返回值

beginIndex: 这是起始索引(包括在内),表示从该索引开始的字符将包含在返回的子字符串中。索引从 0 开始。

endIndex: (可选)这是结束索引(不包括在内),表示在该索引之前的字符将包含在返回的子字符串中。

返回值: 返回一个新的字符串,它包含从 beginIndex 开始到 endIndex 之前的所有字符。如果只指定 beginIndex,则返回从该位置开始到字符串末尾的所有字符。

3. substring() 方法的使用示例

示例 1:使用 substring(int beginIndex)

这种形式的 substring() 方法从指定的起始索引提取直到字符串末尾的所有字符。

public class SubstringExample {
    public static void main(String[] args) {
        String str = "Hello, Java!";
        
        // 提取从索引 7 开始的子字符串
        String result = str.substring(7);
        
        System.out.println("结果: " + result);  // 输出: "Java!"
    }
}
示例 2:使用 substring(int beginIndex, int endIndex)

这种形式的 substring() 方法提取从 beginIndex 到 endIndex 之间的字符,endIndex 处的字符不包含在结果中。

public class SubstringExample {
    public static void main(String[] args) {
        String str = "Hello, Java!";
        
        // 提取从索引 7 到 11 之间的子字符串
        String result = str.substring(7, 11);
        
        System.out.println("结果: " + result);  // 输出: "Java"
    }
}

4. 注意事项

使用 substring() 方法时,有几个重要的注意事项:

索引范围: beginIndex 必须在 0 到 length() 之间,而 endIndex 必须在 beginIndex 到 length() 之间。否则会抛出 StringIndexOutOfBoundsException 异常。

String str = "Hello, Java!";
String result = str.substring(15);  // 这会抛出异常,因为索引超出范围

空字符串: 如果 beginIndex 等于字符串的长度,substring() 返回一个空字符串。如果 beginIndex 和 endIndex 相等,也会返回一个空字符串。

String str = "Hello, Java!";
String result = str.substring(12, 12);  // 返回空字符串

性能问题: 早期版本的 Java 中,substring() 会导致原始字符串的内存无法释放,因为子字符串仍然引用原始字符串的字符数组。但从 Java 7 Update 6 开始,这个问题已经被解决了。

5. 常见的用法

提取文件扩展名:

String fileName = "example.txt";
String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
System.out.println("文件扩展名是: " + extension);  // 输出: "txt"

提取URL中的域名:

String url = "https://www.example.com/index.html";
String domain = url.substring(url.indexOf("://") + 3, url.indexOf("/", url.indexOf("://") + 3));
System.out.println("域名是: " + domain);  // 输出: "www.example.com"

去除字符串两端的括号:

String text = "(Java)";
String result = text.substring(1, text.length() - 1);
System.out.println("去除括号后的文本: " + result);  // 输出: "Java"

6. 总结

substring() 是 Java 中非常有用的字符串处理方法,它使得提取字符串的任意部分变得非常简单。通过了解 substring() 方法的使用方式及其注意事项,你可以更加灵活地操作字符串,满足各种实际开发需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值