Java 中 string.substring
方法详解
简介
在 Java 编程中,字符串处理是一项常见且重要的任务。String
类作为 Java 中处理字符串的核心类,提供了众多实用的方法,其中 substring
方法尤为常用。substring
方法允许我们从一个字符串中提取出部分内容,形成一个新的字符串。本文将详细介绍 string.substring
方法的基础概念、使用方法、常见实践以及最佳实践,帮助读者深入理解并高效使用该方法。
目录
- 基础概念
- 使用方法
- 常见实践
- 最佳实践
- 小结
- 参考资料
1. 基础概念
substring
方法是 String
类的一个实例方法,用于从一个字符串中截取指定范围的子字符串。该方法有两种重载形式:
- public String substring(int beginIndex)
:返回一个从指定索引 beginIndex
开始到原字符串末尾的子字符串。
- public String substring(int beginIndex, int endIndex)
:返回一个从指定索引 beginIndex
开始(包含)到索引 endIndex
结束(不包含)的子字符串。
2. 使用方法
2.1 substring(int beginIndex)
方法
该方法接受一个整数参数 beginIndex
,表示截取子字符串的起始位置。示例代码如下:
public class SubstringExample1 {
public static void main(String[] args) {
String str = "Hello, World!";
// 从索引 7 开始截取子字符串
String subStr = str.substring(7);
System.out.println(subStr); // 输出: World!
}
}
在上述代码中,我们调用 substring(7)
方法,从索引 7 开始截取子字符串,最终输出结果为 World!
。
2.2 substring(int beginIndex, int endIndex)
方法
该方法接受两个整数参数 beginIndex
和 endIndex
,分别表示截取子字符串的起始位置和结束位置。示例代码如下:
public class SubstringExample2 {
public static void main(String[] args) {
String str = "Hello, World!";
// 从索引 7 开始,到索引 12 结束(不包含)截取子字符串
String subStr = str.substring(7, 12);
System.out.println(subStr); // 输出: World
}
}
在上述代码中,我们调用 substring(7, 12)
方法,从索引 7 开始到索引 12 结束(不包含)截取子字符串,最终输出结果为 World
。
3. 常见实践
3.1 提取文件名和扩展名
在处理文件路径时,我们经常需要提取文件名和扩展名。可以使用 substring
方法来实现这一功能。示例代码如下:
public class FileNameAndExtension {
public static void main(String[] args) {
String filePath = "example.txt";
int dotIndex = filePath.lastIndexOf('.');
if (dotIndex != -1) {
String fileName = filePath.substring(0, dotIndex);
String fileExtension = filePath.substring(dotIndex + 1);
System.out.println("文件名: " + fileName);
System.out.println("扩展名: " + fileExtension);
}
}
}
在上述代码中,我们首先使用 lastIndexOf('.')
方法找到最后一个点号的索引,然后使用 substring
方法分别提取文件名和扩展名。
3.2 截取 URL 中的域名
在处理 URL 时,我们可能需要截取其中的域名部分。示例代码如下:
public class ExtractDomain {
public static void main(String[] args) {
String url = "https://www.example.com/path/to/page";
int startIndex = url.indexOf("://") + 3;
int endIndex = url.indexOf('/', startIndex);
if (endIndex == -1) {
endIndex = url.length();
}
String domain = url.substring(startIndex, endIndex);
System.out.println("域名: " + domain);
}
}
在上述代码中,我们首先找到 ://
的位置,然后从该位置向后 3 个字符开始查找第一个斜杠的位置,最后使用 substring
方法截取域名。
4. 最佳实践
4.1 边界检查
在使用 substring
方法时,需要确保传入的索引值在合法范围内,否则会抛出 StringIndexOutOfBoundsException
异常。示例代码如下:
public class BoundaryCheck {
public static void main(String[] args) {
String str = "Hello";
int beginIndex = 2;
int endIndex = 7;
if (beginIndex >= 0 && endIndex <= str.length() && beginIndex <= endIndex) {
String subStr = str.substring(beginIndex, endIndex);
System.out.println(subStr);
} else {
System.out.println("索引值超出范围");
}
}
}
在上述代码中,我们在调用 substring
方法之前,先检查索引值是否合法,避免抛出异常。
4.2 避免频繁使用 substring
由于 substring
方法会创建新的字符串对象,频繁使用会导致内存开销增大。如果需要多次截取子字符串,可以考虑使用 StringBuilder
或 StringBuffer
来提高性能。示例代码如下:
import java.util.StringJoiner;
public class PerformanceImprovement {
public static void main(String[] args) {
String str = "abcdefg";
StringJoiner joiner = new StringJoiner(",");
for (int i = 0; i < str.length(); i++) {
joiner.add(str.substring(i, i + 1));
}
String result = joiner.toString();
System.out.println(result);
}
}
在上述代码中,我们使用 StringJoiner
来拼接子字符串,避免了频繁创建新的字符串对象。
5. 小结
string.substring
方法是 Java 中处理字符串的常用方法,它允许我们从一个字符串中截取指定范围的子字符串。通过本文的介绍,我们了解了 substring
方法的基础概念、使用方法、常见实践以及最佳实践。在使用该方法时,需要注意边界检查,避免频繁使用以提高性能。
6. 参考资料
- 《Effective Java》(第三版)