我最爱的那首歌最爱的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() 方法的使用方式及其注意事项,你可以更加灵活地操作字符串,满足各种实际开发需求。