原文:indexOf in Java – How to Find the Index of a String in Java,作者:Ihechikara Vincent Abba

字符串是嵌套在双引号中的字符的集合。indexOf 方法返回指定字符或子串在字符串中的索引位置。

在这篇文章中,我们将看到不同 indexOf 方法的语法。我们还将看一些例子,以帮助你理解并有效地使用它们,在你的 Java 代码中找到一个字符或子串的索引。

indexOf 方法的语法

indexOf 方法有以下几种方法:

public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)

在看到一些例子之前,让我们解释一下这些参数:

  • char 表示一个字符串中的单个字符。
  • fromIndex 表示搜索一个字符或子串的索引应该从哪个位置开始。当一个字符串中有两个相同值的字符/字符串时,这一点很重要。通过这个参数,你可以告诉 indexOf 方法从哪里开始操作。
  • str 代表字符串中的一个子串。

如果你还不明白这一切是如何运作的,不要担心——例子会帮你理解。

如何在 Java 中使用 indexOf 方法

在下面的第一个例子中,我们将找到一个字符串中单个字符的索引。这个例子将帮助我们理解 public int indexOf(int char) 方法。

indexOf(int Char) 方法示例

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";
    
    System.out.println(greetings.indexOf("o"));
    
    // 4
  }
}

在上面的代码中,我们得到了字符 “o” 的索引,即 4,我们有两个 “o” 字符,但第一个字符的索引被返回。

在下一个例子中,我们将看到我们如何返回第二个 “o” 的索引。

如果你想知道索引数字是如何得出的,那么你应该注意到,一个字符串中的第一个字符的索引是 0,第二个字符的索引是 1,以此类推。

indexOf(int Char, Int fromIndex) 方法实例

下面是一个解释 int indexOf(int char, int fromIndex) 方法的例子:

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";
    
    System.out.println(greetings.indexOf("o", 5));
    
    // 7
  }
}

在上面的例子中,我们告诉 indexOf 方法要从第五个索引开始操作。

H => index 0

e => index 1

l => index 2

l => index 3

0 => index 4

请注意,索引 5 不是 “W” 这个字符,而是 “Hello” 和 “World” 之间的空格。

所以从上面的代码来看,在第 5 个索引之前的其他每个字符都将被忽略。7 被返回为第二个 “o” 字符的索引。

Int indexOf(String Str) 方法实例

在下一个例子中,我们将了解返回子串索引的公共 public int indexOf(String str) 方法是如何工作的。

public class Main {
  public static void main(String[] args) {
    String motivation = "Coding can be difficult but don't give up";
    
    System.out.println(motivation.indexOf("be"));
    
    // 11
  }
}

想知道为什么返回 11 吗?你应该看看上一节,了解索引是如何计算的,子串之间的空格也算作索引。

请注意,当子串被作为参数传入时,返回的索引是子串中第一个字符的索引——11 是 “b” 字符的索引。

indexOf(String Str, Int fromIndex) 方法示例

最后一个方法 public int indexOf(String str, int fromIndex)——与 public int indexOf(int char, int fromIndex) 方法相同,它从一个指定的位置返回一个索引。

下面是一个例子:

public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";
    
    System.out.println(motivation.indexOf("for", 5));
    
    // 21
  }
}

在上面的例子中,我们指定该方法应该从第 5 个索引开始操作,也就是第一个 “for” 子串之后的索引。21 是第二个 “for” 子串的索引。

最后,当我们传入一个在字符串中不存在的字符或子串时,indexOf 方法将返回值 -1。下面是一个例子:

public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";
    
    System.out.println(motivation.indexOf("code"));
    
    // -1
  }
}

总结

在这篇文章中,我们学习了如何使用四个 indexOf 方法,用一个例子解释了每个不同的方法。

我们还看到了这些方法的语法是什么样子的,以及它们如何能够判断要返回的索引。

最后,我们展示了当一个不存在的字符或子串作为参数传入时会发生什么。

祝你编程愉快!