最近在解决android 中listview的查找问题,用到了indexOf 方法,仔细看了下源码,详解如下。
private static int indexOf(String source, String target, int fromIndex) {
final int sourceLength = source.length();
final int targetLength = target.length();
//1、当开始查找位置 大于等于 源字符串长度时,如果[查找字符串]为空,则:
//返回字符串的长度,否则返回-1.
if (fromIndex >= sourceLength) {
return (targetLength == 0 ? sourceLength : -1);
}
//2、如果fromIndex 小于 0,则从 0开始查找。
if (fromIndex < 0) {
fromIndex = 0;
}
//3、如果[查找字符串]为空,则返回fromIndex
if (targetLength == 0) {
return fromIndex;
}
//4、开始查找,从[查找字符串]中得到第一个字符,标记为first
char first = target.charAt(0);
//4.1、计算出源字符串最大开始查找的位置
int max = (sourceLength - targetLength);
//4.2、遍历查找
for (int i = fromIndex; i <= max; i++) {