java 中indexOf函数详解[通俗易懂]

java 中indexOf函数详解[通俗易懂]最近在解决android中listview的查找问题,用到了indexOf方法,仔细看了下源码,详解如下。privatestaticintindexOf(Stringsource,Stringtarget,intfromIndex){finalintsourceLength=source.length();finalinttargetLength=target.length(); //1、当开始查找位置大于等于源

大家好,欢迎来到IT知识分享网。

最近在解决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++) {
            /* Look for first character. */
			//4.2.1、从[源字符串]中,查找到目标字符串每个字母的 first 的位置,找不到直接返回-1结束
            if (source.charAt(i)!= first) {
                while (++i <= max && source.charAt(i) != first);
            }

            /* Found first character, now look at the rest of v2 */
			//4.2.2、如果在[源字符串]中,找到首个[目标字符串],则开始匹配整个[目标字符串]
            if (i <= max) {
			//4.2.2.1、得到下一个要匹配的位置,标记为j
                int j = i + 1;
			//4.2.2.2、得到其余[目标字符串]的长度,标记为end,当j=end时表示目标字符串匹配完成
                int end = j + targetLength - 1;
				//4.2.2.3、遍历,其余[目标字符串],从k开始,
                //如果j不越界(小于end,表示:其余[目标字符串]的范围),
                //同时[源字符串]==[目标字符串],则
                //自增,继续查找匹配。直至完成所有匹配
                for (int k = 1; j < end && source.charAt(j)== target.charAt(k); j++, k++);
                //4.2.2.4、如果j与end相等,则表示:
                //源字符串中匹配到目标字符串,匹配结束,返回i。
                if (j == end) {
                    /* Found whole string. */
                    return i;
                }
            }
        }
		//其余情况,返回-1.表示没有匹配到目标字符串
        return -1;
    }

一、indexOf函数简介
indexOf是String.java中的一个方法,用于返回[目标字符串]在[源字符串]中的位置。

1、indexOf:返回特定子字符串第一次在源字符串中的位置。如果源字符中不存在目标字符,则返回-1。

二、indexOf函数两种用法和实现功能说明

1、 indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
2、indexOf(String str, int index): 返回从 index 位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。

举例说明:

String str = "01234567890123456789";
System.out.println(str.indexOf("123"));
System.out.println(str.indexOf("123",5));
  •  

上面程序的结果为1和11。第1个输出函数中的indexOf()方法只有一个参数,故返回123在str中第一次出现处的索引,为1;第1个输出函数中的indexOf()方法有两个参数,第一个参数为要查找的字符串123,第2个参数为从第5所以位置处开始查找,故只能查找到str中的第2个123,返回其出现的起始索引,为11。

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26344.html

(0)
上一篇 2023-05-09 19:00
下一篇 2023-05-10 21:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信