关于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
- ifbeginIndex
is negative or larger than the length of thisString
object. -
-
-
public String substring(int beginIndex, int endIndex)
-
Returns a new string that is a substring of this string. The substring begins at the specified
beginIndex
and 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 thebeginIndex
is negative, orendIndex
is larger than the length of thisString
object, orbeginIndex
is larger thanendIndex
.
-
PS:iteye的表格编辑实在很困难,望高人指点。