关于String.substring方法
该方法的签名为
String substring(int beginIndex, int endIndex)
结合javadoc和源代码,对该方法进行分析:
根据beginIndex与0或count的比较、beginIndex与endIndex的比较、endIndex与字符串长度count的比较,有几种情况:
| # | beginIndex与0比较 | beginIndex与endIndex比较 | endIndex与count比较 | 结果 |
| 1 | <0 | IndexOutOfBoundsException | ||
| 2 | =0 | < | < | 子串 |
| 3 | < | = | String对象本身 | |
| 4 | < | > | IndexOutOfBoundsException | |
| 5 | = | "" 空串 | ||
| 6 | > | IndexOutOfBoundsException | ||
| 7 | >0 & <count | < | < | 子串 |
| 8 | < | = | 子串 | |
| 9 | < | > | IndexOutOfBoundsException | |
| 10 | = | "" 空串 | ||
| 11 | > | IndexOutOfBoundsException | ||
| 12 | =count | < | IndexOutOfBoundsException | |
| 13 | = | "" 空串 | ||
| 14 | > | IndexOutOfBoundsException | ||
| 15 | >count | IndexOutOfBoundsException |
上面的表格列出的情况多达15种,可见要对代码进行覆盖性测试确实是非常困难的。
jdk6中String.substring的文档 写道
public String substring(int beginIndex)
-
Returns a new string that is a substring of this string. The substring begins with the character at the specified index and extends to the end of this string.
Examples:
"unhappy".substring(2) returns "happy" "Harbison".substring(3) returns "bison" "emptiness".substring(9) returns "" (an empty string)
-
-
Parameters:
-
beginIndex- the beginning index, inclusive.
Returns:
- the specified substring. Throws:
-
IndexOutOfBoundsException- ifbeginIndexis negative or larger than the length of thisStringobject. -
-
-
public String substring(int beginIndex, int endIndex)
-
Returns a new string that is a substring of this string. The substring begins at the specified
beginIndexand extends to the character at indexendIndex - 1. Thus the length of the substring isendIndex-beginIndex.Examples:
"hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile"
-
-
Parameters:
-
beginIndex- the beginning index, inclusive. -
endIndex- the ending index, exclusive.
Returns:
- the specified substring. Throws:
-
IndexOutOfBoundsException- if thebeginIndexis negative, orendIndexis larger than the length of thisStringobject, orbeginIndexis larger thanendIndex.
-
PS:iteye的表格编辑实在很困难,望高人指点。
本文详细解析了Java中String类的subString方法的工作原理及其使用案例,包括单参数和双参数版本的方法签名,并列举了可能遇到的各种边界情况。
197

被折叠的 条评论
为什么被折叠?



