欢迎访问宙启技术站
智能推送

JavaString类的substring()函数详解

发布时间:2023-06-15 21:25:05

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()函数时,需要注意指定开始索引与结束索引的范围,避免抛出异常。这个函数常用于对字符串进行截取操作,通常用于获取常见的字符串前缀、后缀,或者是在字符串中查找一部分内容并截取。