JavaString类的substring()函数详解
Java中的String类是一个非常常用的类,它封装了一个字符串,并提供了许多对于字符串的操作函数。其中的substring()函数是其中一个,它可以将一个字符串截取出一部分作为一个新的字符串返回。本篇文章将对Java中的String类的substring()函数进行详细解释。
1、substring()函数的定义
Java中的String类有两个版本的substring()函数,一个是从指定索引开始的子字符串,另一个是从指定索引开始到指定索引结束的子字符串。
第一个版本的函数签名如下:
public String substring(int startIndex)
第二个版本的函数签名如下:
public String substring(int startIndex, int endIndex)
这两个函数的实现原理基本相同,只不过后者还会指定一个结束索引。
2、substring()函数的使用
2.1、第一个版本的使用
第一个版本的substring()函数是从指定索引开始的子字符串。它的实现原理是从指定的开始索引处开始遍历字符串,将所有字符加入一个新的字符串中,直到字符串的末尾。函数返回新的字符串。
示例代码如下:
String str = "abcdefg";
String subStr1 = str.substring(2); // subStr1的值为"cdefg"
上述代码中,str是原始的字符串,通过调用substring()函数,我们截取从第2个字符开始的字符串,因此subStr1的值为"cdefg"。
2.2、第二个版本的使用
第二个版本的substring()函数是从指定索引开始到指定索引结束的子字符串。它的实现原理与第一个版本类似,遍历指定索引开始到结束位置之间所有的字符,将它们加入到新的字符串中。
示例代码如下:
String str = "abcdefg";
String subStr2 = str.substring(2, 5); // subStr2的值为"cde"
上述代码中,我们使用第二个版本的substring()函数,截取了从第2个字符到第5个字符之间的字符串,即"cde"。
值得注意的是,substring()函数中指定的索引位置都是从0开始的,因此索引0表示字符串中的第一个字符,索引1表示第二个字符,依次类推。而对于第二个版本的函数,在指定结束索引时,真正被截取出来的字符串是从开始索引处到结束索引处的,不包含结束索引指向的字符。
3、substring()函数的异常
当使用substring()函数时,也会发生异常。这些异常包括:
①、IndexOutOfBoundsException
当指定的索引位置不在字符串长度的范围内时,会抛出IndexOutOfBoundsException异常。例如,字符串长度为5,却要求截取从索引6开始到索引10结束的子字符串,就会导致这个异常的抛出。
String str = "abcdefg";
try {
String subStr3 = str.substring(6, 10);
} catch (Exception e) {
System.out.println("抛出异常: " + e.getMessage()); // 输出"String index out of range: -4"
}
上述代码中,由于要求截取从索引6开始到索引10结束的子字符串,超出了字符串长度的范围,因此抛出了IndexOutOfBoundsException异常。
②、IllegalArgumentException
当指定的结束索引小于开始索引时,会抛出IllegalArgumentException异常。例如,我们要求截取从索引5开始到索引3结束的子字符串,就会导致这个异常的抛出。
String str = "abcdefg";
try {
String subStr4 = str.substring(5, 3);
} catch (Exception e) {
System.out.println("抛出异常: " + e.getMessage()); // 输出"endIndex < beginIndex"
}
上述代码中,由于结束索引小于开始索引,因此抛出了IllegalArgumentException异常。
4、总结
Java中的String类提供的substring()函数可以有效地截取一个字符串的一部分,返回一个新的字符串。使用substring()函数时,需要注意指定开始索引与结束索引的范围,避免抛出异常。这个函数常用于对字符串进行截取操作,通常用于获取常见的字符串前缀、后缀,或者是在字符串中查找一部分内容并截取。
