在Java中的另一个字符串中搜索字符串– indexOf,lastIndexOf和contains方法

时间:2020-01-09 10:34:54  来源:igfitidea点击:

如果要检查给定的字符串是否存在于另一个字符串中,那么在Java中,我们可以使用以下选项

  • 使用indexOf()方法查找指定字符或者子字符串的首次出现。参见示例。
  • 使用lastIndexOf()方法获取指定字符或者子字符串的最后一次出现在此字符串中的索引。参见示例。
  • 使用Java中的contains()方法,我们可以检查此字符串是否包含指定的子字符串。如果发现子字符串为false,则返回true。参见示例。

请注意,所有这些方法都执行区分大小写的搜索,因此,如果我们不希望大小写成为搜索时要考虑的因素,则可能需要将String和substring转换为类似的大小写(小写或者大写)。

使用Java中的indexOf()方法搜索字符串

Java String类的indexOf()方法具有4个变体,其中两个用于搜索指定的字符,另外两个用于搜索指定的子字符串。

  • int indexOf(int ch)–如果找到,则返回指定字符首次出现在此字符串中的索引,否则返回-1.
  • int indexOf(int ch,int fromIndex)-如果找到,则返回指定字符首次出现在此字符串中的索引,并从指定索引处开始搜索。如果找不到字符,则返回-1.
  • int indexOf(String str)–如果找到,则返回指定子字符串首次出现在该字符串中的索引,否则返回-1.
  • int indexOf(String str,int fromIndex)-如果找到,则从指定的索引开始,返回指定子字符串首次出现在该字符串内的索引。如果未找到子字符串,则返回-1.

使用indexOf()示例在字符串中搜索字符

public class StringSearch {
  public static void main(String[] args) {
    String str = "This is a test String";
    // Search for first occurrence
    int index = str.indexOf('s');
    System.out.println("First occurrence of character 's' found at index " + index);
    // Search for first occurrence after specified index
    index = str.indexOf('s', 11);
    System.out.println("First occurrence of character 's' after index 11 found at index " + index);
  }
}

输出:

First occurrence of character 's' found at index 3
First occurrence of character 's' after index 11 found at index 12

使用indexOf()Java示例在字符串中搜索子字符串

public class StringSearch {
  public static void main(String[] args) {
    String str = "This is a test String";
    // Search for first occurrence
    int index = str.indexOf("test");
    if(index != -1) {
      System.out.println("First occurrence of substring test found at index " + index);
    }else {
      System.out.println("Substring not found ");
    }
    
    // Search for first occurrence after specified index
    index = str.indexOf("test", 6);
    System.out.println("First occurrence of substring test after index 6 found at index " + index);
  }
}

输出:

First occurrence of substring test found at index 10
First occurrence of substring test after index 6 found at index 10

在Java中使用lastIndexOf()方法搜索字符串

Java String类的lastIndexOf()方法具有4个变体,两个用于搜索指定的字符,两个用于搜索指定的子字符串。

  • int lastIndexOf(int ch)–如果找到,则返回指定字符最后一次出现在此字符串中的索引,否则返回-1.
  • int lastIndexOf(int ch,int fromIndex)–如果找到,则返回指定字符最后一次出现在此字符串中的索引,从指定索引处开始向后搜索。如果找不到字符,则返回-1.
  • int lastIndexOf(String str)–如果找到,则返回指定子字符串最后一次出现在此字符串中的索引,否则返回-1.
  • int lastIndexOf(String str,int fromIndex)–如果找到,则返回指定子字符串最后一次出现在此字符串中的索引,并在指定索引处向后搜索。如果未找到子字符串,则返回-1.

使用lastIndexOf()示例在字符串中搜索字符

public class StringSearch {
  public static void main(String[] args) {
    String str = "This is a test String";
    // Search for last occurrence
    int index = str.lastIndexOf('s');
    System.out.println("Last occurrence of character 's' found at index " + index);
    // Search for last occurrence after specified index
    index = str.lastIndexOf('s', 11);
    System.out.println("Last occurrence of character 's' moving backward from index 11 found at index " + index);
  }
}

输出:

Last occurrence of character 's' found at index 12
Last occurrence of character 's' moving backward from index 11 found at index 6

使用lastIndexOf()示例在字符串中搜索子字符串

public class StringSearch {
  public static void main(String[] args) {
    String str = "test String to test";
    // Search for last occurrence
    int index = str.lastIndexOf("test");
    if(index != -1) {
      System.out.println("Last occurrence of substring test found at index " + index);
    }else {
      System.out.println("Substring not found ");
    }		
    // Search for last occurrence after specified index
    index = str.lastIndexOf("test", 6);
    System.out.println("Last occurrence of substring test moving backward from index 6 found at index " + index);
  }
}

输出:

Last occurrence of substring test found at index 15
Last occurrence of substring test moving backward from index 6 found at index 0

使用Java中的contains()方法搜索字符串

  • boolean contains(CharSequence s)–当且仅当此字符串包含指定的char值序列时,返回true;否则返回false。

CharSequence是一个由String,StringBuffer和StringBuilder实现的接口,因此可以使用contains()方法传递这些类的对象。

public class StringSearch {
  public static void main(String[] args) {
    String str = "This is a test String";
    String str1= "test";
    if(str.contains(str1)) {
      System.out.println(str1 + " found in String");
    }else {
      System.out.println(str1 + "is not found in String");
    }
  }
}

输出:

test found in String

如果我们搜索" Test",则返回false,因为搜索区分大小写。

public class StringSearch {
  public static void main(String[] args) {
    String str = "This is a test String";
    String str1= "Test";
    if(str.contains(str1)) {
      System.out.println(str1 + " found in String");
    }else {
      System.out.println(str1 + " is not found in String");
    }
  }
}

输出:

Test is not found in String