📜  在Java中搜索字符串中的字符和子字符串

📅  最后修改于: 2020-03-27 07:14:30             🧑  作者: Mango

在字符串中搜索字符

  • indexOf(char c):在给定字符串中搜索指定字符的索引。它从字符串的开头到结尾(从左到右)开始搜索,如果找到则返回相应的索引,否则返回-1。
    注意:如果给定的字符串包含多次出现的指定字符,则它仅返回第一次出现的指定字符的索引。
    语法:
    int indexOf(char c)
    //接受字符作为参数,返回第一次出现指定字符索引
  • lastIndexOf(char c):从字符串的末尾开始向前搜索,并在遇到指定字符时返回指定字符的索引。
    语法:
    public int lastIndexOf(char c)
    //接受字符作为参数,返回指定字符的最后一次出现的索引
  • IndexOf(char c,int indexFrom):从字符串中的指定索引开始向后搜索,并在遇到指定字符时返回相应的索引,否则返回-1。注意:返回的索引必须大于或等于指定的索引。
    语法:
    public int IndexOf(char c,int indexFrom)
    char:要搜索的字符。
    indexfrom:从此处索引开始搜索
  • lastIndexOf(char c,int fromIndex):从字符串中的指定索引开始向前搜索。并在遇到指定字符时返回相应的索引,否则返回-1。
    注意:返回的索引必须小于或等于指定的索引。
    语法:
    public int lastIndexOf(char c,int fromIndex)
  • charAt(int indexNumber):返回给定字符串中指定索引indexNumber存在的字符。如果字符串中不存在指定的索引号,则该方法将引发未经检查的StringIndexOutOfBoundsException。
    语法:
    char charAt(int indexNumber)
    // Java中搜索字符串中的字符和子字符串
    import java.io.*;
    class GFG
    {
      public static void main (String[] args)
      {
        //  有待搜索的字符串string
        String str = "GeeksforGeeks is a computer science portal";
        // 返回字符第一次出现的索引.
        int firstIndex = str.indexOf('s');
        System.out.println("字符's'第一次出现的索引" +
                           " 在 : " + firstIndex);
        // 返回字符最后一次出现的索引.
        int lastIndex = str.lastIndexOf('s');
        System.out.println("字符's'最后一次出现的索引" +
                           " 在 : " + lastIndex);
        // 字符第一次出现的索引,在指定索引之后开始寻找
        int first_in = str.indexOf('s', 10);
        System.out.println("字符's'第一次出现的索引" +
                           " 在索引10之后 : " + first_in);
        int last_in = str.lastIndexOf('s', 20);
        System.out.println("字符's'最后一次出现的索引" +
                         " 在索引20之后 : " + last_in);
        // 返回索引=20的字符的ASCII值
        int char_at = str.charAt(20);
        System.out.println("在索引=20的字符: " +
                                                 char_at);
        // 如果报错:StringIndexOutOfBoundsException
        // char_at = str.charAt(50);
      }
    }

    输出:

    字符's'第一次出现的索引 在 : 4
    字符's'最后一次出现的索引 在 : 28
    字符's'第一次出现的索引' 在索引10之后 : 12
    字符's'最后一次出现的索引 在索引20之后 : 15
    在索引=20的字符: 111

    在字符串中搜索子字符串

    • 上面提到的用于搜索字符串中的字符的方法也可以用于搜索字符串中的子字符串。
      // Java展示在字符串中搜索子字符串.
      import java.io.*;
      class GFG
      {
        public static void main (String[] args)
        {
          // 有待搜索的字符串string
          String str = "GeeksforGeeks is a computer science portal";
          // 返回字符串第一次出现的索引.
          int firstIndex = str.indexOf("Geeks");
          System.out.println("Geeks第一次出现的索引"+
                     " 在 : " + firstIndex);
          // 返回字符串最后一次出现的索引. 
          int lastIndex = str.lastIndexOf("Geeks");
          System.out.println("Geeks最后一次出现的索引"+
                     " 在 : " + lastIndex);
          // 字符串第一次出现的索引,在指定索引之后开始寻找 
          int first_in = str.indexOf("Geeks", 10);
          System.out.println("Geeks第一次出现"+
                     " 在索引10之后 : " + first_in);
          int last_in = str.lastIndexOf("Geeks", 20);
          System.out.println("Geeks最后一次出现" +
                     "在20之前 : " + last_in);
        }
      }

      输出:

      Geeks第一次出现的索引 在 : 0
      Geeks最后一次出现的索引 在 : 8
      Geeks第一次出现  在索引10之后 : -1
      Geeks最后一次出现 在20之前 : 8
    • contains(CharSequence seq):如果String包含指定的char值序列,则返回true,否则返回false。它的参数为要搜索的字符序列,如果seq为null,则抛出NullPointer异常。
      public boolean contains(CharSequence seq)

      注意: CharSequence是由String类实现的接口,因此我们将string用作contains()方法中的参数。

      // Java 展示如何寻找子字符串
      import java.io.*;
      import java.lang.*;
      class GFG
      {
        public static void main (String[] args)
        {
          // 待搜索的字符串
          String test = "software";
          CharSequence seq = "soft";
          boolean bool = test.contains(seq);
          System.out.println("找到了soft?: " + bool);
          // 如果有子字符串,返回true.
          boolean seqFound = test.contains("war");
          System.out.println("找到了war? " + seqFound);
          // 如果有子字符串,返回true.否则false
          boolean sqFound = test.contains("wr");
          System.out.println("找到了wr?: " + sqFound);
        }
      }

      输出:

      找到了soft?: true
      找到了war? true
      找到了wr?: false

匹配字符串的开始和结束

  • boolean startsWith(String str):如果字符串str存在于给定字符串的开头,则返回true,否则返回false。
  • boolean startsWith(String str,int indexNum):如果字符串str存在于给定字符串的索引indexNum的开头,则返回true,否则返回false。
  • boolean EndsWith(String str):如果字符串str存在于给定字符串的末尾,则返回true,否则返回false。
    // Java展示匹配匹配字符串的开始和结束
    import java.io.*;
    class GFG
    {
      public static void main (String[] args)
      {
        // 待搜索的字符串
        String str = "GeeksforGeeks  is a computer science portal";
        System.out.println(str.startsWith("Geeks"));
        System.out.println(str.startsWith("is", 14));
        System.out.println(str.endsWith("port"));
      }
    }

    输出:

    true
    true
    false