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

Java中的“indexOf()”函数的用法和实现方法

发布时间:2023-11-27 19:20:05

在Java中,indexOf()函数是一个用于查找指定字符串或字符在字符串中 次出现的位置的方法。它返回一个整数值,表示目标字符串的起始位置。如果该字符串未找到,就返回-1。

使用语法:

int indexOf(String str) 

int indexOf(char ch)

1. indexOf(String str):该方法接受一个字符串作为参数,然后在调用方法的字符串中查找该参数字符串。

例如:

String str = "Hello World";

int index = str.indexOf("World");

System.out.println(index); // 输出:6

在这个例子中,indexOf()方法返回参数字符串"World"在调用方法的字符串"Hello World"中 次出现的位置,即6。

2. indexOf(char ch):该方法接受一个字符作为参数,然后在调用方法的字符串中查找该字符。

例如:

String str = "Hello World";

int index = str.indexOf('o');

System.out.println(index); // 输出:4

在这个例子中,indexOf()方法返回参数字符'o'在调用方法的字符串"Hello World"中 次出现的位置,即4。

indexOf()方法还可以接受一个可选的参数 startIndex,表示从指定索引开始查找目标字符串或字符。

例如:

String str = "Hello World";

int index = str.indexOf('o', 5);

System.out.println(index); // 输出:7

在这个例子中,indexOf()方法从索引5开始查找字符'o',并返回 次出现的位置,即7。

实现方法:

indexOf()方法的实现可以有多种方式,其中一种常见的实现方法是使用循环遍历字符串的每个字符,并逐个比较目标字符串或字符。

以下是一个简单的实现示例:

public static int indexOf(String str, String target) {

    int targetLen = target.length();

    int maxLen = str.length() - targetLen;

    for (int i = 0; i <= maxLen; i++) {

        for (int j = 0; j < targetLen; j++) {

            if (str.charAt(i + j) != target.charAt(j)) {

                break;

            }

            if (j == targetLen - 1) {

                return i;

            }

        }

    }

    return -1;

}

在这个实现方法中,首先计算目标字符串的长度 targetLen 和调用方法字符串减去目标字符串长度后的长度 maxLen。然后使用两个嵌套的循环,外层循环遍历调用方法字符串的每个字符,内层循环遍历目标字符串的每个字符。逐个比较两个字符串中对应位置的字符,如果不匹配,则跳出当前循环,并进行下一个位置的比较。如果内层循环完成时都没有跳出,就表示找到了目标字符串,返回当前位置。如果外层循环完成后仍没有找到,就返回-1表示未找到。

当然,这只是其中一种实现方法,实际上Java的String类中的indexOf()方法可能实现更加高效和复杂,采用了更多的优化和算法技巧。但是基本的思想都是相似的,遍历和比较字符串中的字符来找出目标字符串的位置。