Как найти индекс символа в строке java

Данная статья:

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего «Самоучителя по Java»

Метод indexOf() в Java

Метод indexOf() ищет в строке заданный символ или строку, и их возвращает индекс (т.е. порядковый номер). Метод:

  • возвращает индекс, под которым символ или строка первый раз появляется в строке;
  • возвращает (-1) если символ или строка не найдены.

Метод также может искать символ или строку, начиная с указанного индекса.

Библиотека:

Синтаксис метода:

public int indexOf(char ch)

public int indexOf(char ch, int fromIndex)

или

public int indexOf(String s)

public int indexOf(String s, int fromIndex)

Вызов:

int index = str1.indexOf(myChar);

int index = str1.indexOf(myChar, start);

или

int index = str1.indexOf(myString);

int index = str1.indexOf(myString, start);

Пример 1:

public class Test {

    public static void main(String args[]) {

       String hello = «Hello»;

        int index1 = hello.indexOf(‘H’);

        int index2 = hello.indexOf(‘o’);

        int index3 = hello.indexOf(‘W’);

        System.out.println(«Мы ищем букву ‘H’ в строке «+hello+«. Индекс данной буквы «+index1 );

        System.out.println(«Мы ищем букву ‘o’ в строке «+hello+«. Индекс данной буквы «+index2 );

        System.out.println(«Мы ищем букву ‘W’ в строке «+hello+«. Индекс данной буквы «+index3 );

    }

}

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите следующее:

Комментарии к коду:

У нас есть строка «Hello». С помощью метода indexOf мы искали индекс трех символов — ‘H’, ‘o’ и ‘W’.

  • Символ ‘H’ стоит первым в строке. indexOf возвращает ноль.
  • Символ ‘o’ стоит в конце строки. Получаем его индекс 4.
  • Символ ‘W’ не встречается в строке «Hello». Получаем (-1).
Пример 2:

public class Test {

    public static void main(String args[]) {

       String hello = «Hello»;

        int index1 = hello.indexOf(‘H’, 2);

        int index2 = hello.indexOf(‘o’, 2);

        int index3 = hello.indexOf(‘W’, 2);

        System.out.println(«Мы ищем букву ‘H’ в строке «+hello+» начиная с индекса номер 2. Индекс «+index1 );

        System.out.println(«Мы ищем букву ‘o’ в строке «+hello+» начиная с индекса 2. Индекс «+index2 );

        System.out.println(«Мы ищем букву ‘W’ в строке «+hello+» начиная с индекса 2. Индекс «+index3 );

    }

}

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите следующее:

Комментарии к коду:

У нас есть строка «Hello». С помощью метода indexOf мы искали индекс трех символов — ‘H’, ‘o’ и ‘W’, но теперь начиная с символа под индексом 2.

  • Символ ‘H’ стоит первым в строке. Но так как первые два символа в строке игнорируются,  indexOf возвращает -1 («символ не найден»).
  • Символ ‘o’ стоит в конце строки. Он находится после второго символа, а значит функция его «видит». Как и в прошлом примере, получаем 4.
  • Символ ‘W’ не встречается в строке «Hello». Как и в прошлом примере, получаем (-1).
Пример 3:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

public class Test {

    public static void main(String args[]) {

       String gm = «Good morning»;

        int index1 = gm.indexOf(«morni»);

        int index2 = gm.indexOf(«Vertex»);

        int index3 = gm.indexOf(«Good morning», 2);

        int index4 = gm.indexOf(«Good morning», 2);

        int index5 = gm.indexOf(«Good morning», 999);

        System.out.println(«Мы ищем ‘morni’ в строке «+gm+«. Индекс «+index1 );

        System.out.println(«Мы ищем ‘Vertex’ в строке «+gm+«. Индекс «+index2 );

        System.out.println(«Мы ищем ‘Good morning’ в строке «+gm+» начиная с индекса -2. Результат: «+index3 );

        System.out.println(«Мы ищем ‘Good morning’ в строке «+gm+» начиная с индекса 2. Результат: «+index4 );

        System.out.println(«Мы ищем ‘Good morning’ в строке «+gm+» начиная с индекса 888. Результат: «+index5 );

    }

}

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите следующее:

Комментарии к коду:

Посмотрим, как метод ищет строки. У нас есть переменная «Good morning». В ней мы ищем три подстроки: «morni», «Vertex» и «Good morning».

  • «morni» — это часть строки «Good morning». Первый символ найденной подстроки «morni» имеет индекс 5. Поэтому, в консоли получаем 5.
  • «Vertex» в строке не встречается. Получаем -1;
  • «Good morning» мы ищем три раза.
    • Первый раз мы задавали отрицательный индекс (-2). Метод indexOf интерпретирует его как ноль (т.е. «искать с начала строки»). Поэтому, в консоли получаем индекс ноль — начало подстроки совпадает с началом основной строки.
    • Во второй раз мы задаем значение 2. Фактически, теперь метод проверяет, встречается ли в строке «od morning» подстрока»Good morning». Нет, не встречается. Получаем (-1) в консоли.
    • В третий раз мы задаем значение, которое явно больше длины строки 888. Это как если бы мы искали что-то в пустой строке. Получаем (-1).

Данная статья написана Vertex Academy. Можно пройти наши курсы Java с нуля. Детальнее на сайте.

Теги: java, string, символ, поиск, строка, метод, буква, знак, contains

В этой статье мы рассмотрим, как выполнять поиск букв и других символов в строке Java, а также как проверять, находится ли нужный символ, буква или слово в строке, начиная с указанного индекса.

JavaPro_970x90-20219-3b63e7.png

Строкой в Java называют упорядоченную последовательность символов. Как правило строка в Java — это один из основных носителей текстовой информации.

Для работы со строками в Java применяют классы String, StringBuilder и StringBuffer. Класс String включает методы, возвращающие позицию символа либо подстроки в строке:
— indexOf() — для поиска с начала строки;
— lastIndexOf() — для выполнения поиска с конца строки.

Таким образом, если метод indexOf() найдёт заданную букву, символ либо строку, он вернёт индекс, то есть порядковый номер. Если не найдёт, будет возвращено -1. Также он позволяет искать символ или букву, начиная с указанного индекса.

Кроме того, стоит добавить, что класс String включает в себя ещё и метод contains, возвращающий true, когда в строке содержится заданная последовательность символов. Этот метод рекомендуется использовать лишь тогда, когда вам просто нужно узнать о существовании подстроки в строке, при этом позиция не имеет значения.

Метод indexOf()

Библиотека метода:


Синтаксис следующий:

public int indexOf(char ch)
public int indexOf(char ch, int fromIndex)

либо

public int indexOf(String s)
public int indexOf(String s, int fromIndex)

Соответственно, вызвать метод можно тоже несколькими способами:

int index = str1.indexOf(myChar);
int index = str1.indexOf(myChar, start);

или:

int index = str1.indexOf(myString);
int index = str1.indexOf(myString, start);

Представьте, что нам нужно отыскать в строке индекс первого вхождения требуемого символа/буквы, а также нужного слова. Как уже было сказано выше, метод indexOf() вернёт нам индекс первого вхождения, а в случае неудачи — вернёт -1.

JavaSpec_970x90-20219-e8e90f.png

Посмотрите на следующий код:

public class Main {
   public static void main(String[] args) {
      String str = "Otus — онлайн-образование";

      int indexM = str.indexOf("з"); // Ищем символ в строке
      int indexJava = str.indexOf("онлайн"); // Ищем слово в строке

      if(indexM == - 1) {
         System.out.println("Символ "з" не найден.");
      } else {
         System.out.println("Символ "з" найден, его индекс: " + indexM);
      }

      if(indexJava == - 1) {
         System.out.println("Слово "онлайн" не найдено.");
      } else {
         System.out.println("Слово "онлайн" найдено, его индекс: " + indexJava);
      }
   }
}

Результат получим следующий:

Символ "з" найден, его индекс: 18
Слово "онлайн" найдено, его индекс: 7

Метод contains

Бывают ситуации, когда нам необходимо проверить, содержит ли наша строка конкретный символ/букву либо слово. Нижеследующий Java-код продемонстрирует и этот пример:

public class Main {
   public static void main(String[] args) {
      String str = "Otus — онлайн-образование";
      System.out.println("Слово "Otus" есть в строке str? Ответ: " + str.contains("Otus"));
      System.out.println("Символ "z" присутствует в строке str? Ответ: " + str.contains("z"));
   }
}

В этом случае результат будет следующим:

Слово "Otus" есть в строке str? Ответ: true
Символ "z" присутствует в строке str? Ответ: false

Как видите, выполнять поиск букв и других символов в строке Java совсем несложно, и наши элементарные примеры убедительно это подтверждают. Если же вы хотите получить более продвинутые навыки по Java-разработке, добро пожаловать на наш курс:

JavaPro_970x550-20219-8420e5.png

indexOf in Java – How to Find the Index of a String in Java

A string is a collection of characters nested in double quotes. The indexOf method returns the index position of a specified character or substring in a string.

In this article, we’ll see the syntax for the different indexOf methods. We’ll also look at some examples to help you understand and use them effectively to find the index of a character or substring in your Java code.

Syntax for the indexOf Method

The indexOf method has the following methods:

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

Let’s explain these parameters before seeing some examples:

  • char represents a single character in a string.
  • fromIndex signifies the position where the search for the index of a character or substring should begin. This is important where you have two characters/strings that have the same value in a string. With this parameter, you can tell the indexOf method where to start its operation from.
  • str represents a substring in a string.

Don’t worry if you don’t yet understand how any of this works – the examples will make it all clear!

How to Use the indexOf Method in Java

In the first example below, we’ll find the index of a single character in a string. This example will help us understand the public int indexOf(int char) method.

indexOf(int Char) Method Example

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

In the code above, we got the index of the character «0» returned to us which is 4. We have two «o» characters but the index of the first one got returned.

In the next example, we’ll see how we can return the index of the second «o» in the next example.

If you’re wondering how the index numbers are derived then you should note that the first character in a string has an index of zero, the second character has an index of one, and so on.

indexOf(int Char, Int fromIndex) Method Example

Here’s an example that explains the int indexOf(int char, int fromIndex) method:

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

In the example above, we are telling the indexOf method to begin its operation from the fifth index.

H => index 0

e => index 1

l => index 2

l => index 3

0 => index 4

Note that index 5 is not the character «W». The fifth index is the space between «Hello» and «World».

So from the code above, every other character that comes before the fifth index will be ignored. 7 is returned as the index of the second «o» character.

Int indexOf(String Str) Method Example

In the next example, we’ll understand how the public int indexOf(String str) method which returns the index of a substring works.

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
  }
}

Wondering how we got 11 returned? You should check the last section to understand how indexes are counted and how spaces between substrings count as indexes as well.

Note that when a substring is passed in as a parameter, the index returned is the index of the first character in the substring – 11 is the index of the «b» character.

indexOf(String Str, Int fromIndex) Method Example

The last method – public int indexOf(String str, int fromIndex) – is the same as the public int indexOf(int char, int fromIndex) method. It returns an index from a specified position.

Here is an example:

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
  }
}

In the example above, we have specified that the method should start its operation from the fifth index which is the index that comes after the first «for» substring. 21 is the index of the second «for» substring.

Lastly, when we pass in a character or substring that doesn’t exist in a string, the indexOf method will return a value of -1. Here is an example:

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
  }
}

Conclusion

In this article, we learned how to use the four indexOf methods with an example explaining each of the different methods.

We also saw what the syntax for each of these methods looks like and how they are able to tell the index to return.

We ended by showing what happens when a character or substring that doesn’t exist is passed in as a parameter.

Happy coding!



Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Strings are a very important aspect from a programming perspective as many questions can be framed out among strings. There arise wide varied sets of concepts and questions that are pivotal to understanding strings. Now over here will be discussing different ways to play with strings where we will be playing with characters with strings and substrings which is a part of input strings with help of inbuilt methods and also by proposing logic listing wide varied ways as follows: 

Searching a Character in the String

Way 1: indexOf(char c)

It searches the index of specified characters within a given string. It starts searching from the beginning to the end of the string (from left to right) and returns the corresponding index if found otherwise returns -1. 

Note: If the given string contains multiple occurrences of a specified character then it returns the index of the only first occurrence of the specified character. 

Syntax: 

int indexOf(char c)
// Accepts character as argument, Returns index of 
// the first occurrence of specified character 

Way 2: lastIndexOf(char c)

It starts searching backward from the end of the string and returns the index of specified characters whenever it is encountered. 

Syntax: 

public int lastIndexOf(char c)
// Accepts character as argument, Returns an 
// index of the last occurrence specified 
// character

Way 3: indexOf(char c, int indexFrom)

It starts searching forward from the specified index in the string and returns the corresponding index when the specified character is encountered otherwise returns -1. 

Note: The returned index must be greater than or equal to the specified index. 

Syntax: 

public int IndexOf(char c, int indexFrom)

Parameters: 

  • The character to be searched
  • An integer from where searching

Return Type: An index of a specified character that appeared at or after the specified index in a forwarding direction.

Way 4: lastIndexOf(char c, int fromIndex)

It starts searching backward from the specified index in the string. And returns the corresponding index when the specified character is encountered otherwise returns -1. 

Note: The returned index must be less than or equal to the specified index. 

Syntax: 

public int lastIndexOf(char c, int fromIndex)

Way 5: charAt(int indexNumber)

Returns the character existing at the specified index, indexNumber in the given string. If the specified index number does not exist in the string, the method throws an unchecked exception, StringIndexOutOfBoundsException. 

Syntax:

char charAt(int indexNumber)

Example:

Java

import java.io.*;

class GFG {

    public static void main(String[] args)

    {

        String str

            = "GeeksforGeeks is a computer science portal";

        int firstIndex = str.indexOf('s');

        System.out.println("First occurrence of char 's'"

                           + " is found at : "

                           + firstIndex);

        int lastIndex = str.lastIndexOf('s');

        System.out.println("Last occurrence of char 's' is"

                           + " found at : " + lastIndex);

        int first_in = str.indexOf('s', 10);

        System.out.println("First occurrence of char 's'"

                           + " after index 10 : "

                           + first_in);

        int last_in = str.lastIndexOf('s', 20);

        System.out.println("Last occurrence of char 's'"

                           + " after index 20 is : "

                           + last_in);

        int char_at = str.charAt(20);

        System.out.println("Character at location 20: "

                           + char_at);

    }

}

Output

First occurrence of char 's' is found at : 4
Last occurrence of char 's' is found at : 28
First occurrence of char 's' after index 10 : 12
Last occurrence of char 's' after index 20 is : 15
Character at location 20: 111

 Way 6: Searching Substring in the String

The methods used for searching a character in the string which are mentioned above can also be used for searching the substring in the string. 

Example

Java

import java.io.*;

class GFG {

    public static void main(String[] args)

    {

        String str

            = "GeeksforGeeks is a computer science portal";

        int firstIndex = str.indexOf("Geeks");

        System.out.println("First occurrence of char Geeks"

                           + " is found at : "

                           + firstIndex);

        int lastIndex = str.lastIndexOf("Geeks");

        System.out.println(

            "Last occurrence of char Geeks is"

            + " found at : " + lastIndex);

        int first_in = str.indexOf("Geeks", 10);

        System.out.println("First occurrence of char Geeks"

                           + " after index 10 : "

                           + first_in);

        int last_in = str.lastIndexOf("Geeks", 20);

        System.out.println("Last occurrence of char Geeks "

                           + "after index 20 is : "

                           + last_in);

    }

}

Output

First occurrence of char Geeks is found at : 0
Last occurrence of char Geeks is found at : 8
First occurrence of char Geeks after index 10 : -1
Last occurrence of char Geeks after index 20 is : 8

Way 7: contains(CharSequence seq): It returns true if the string contains the specified sequence of char values otherwise returns false. Its parameters specify the sequence of characters to be searched and throw NullPointerException if seq is null. 

Syntax: 

public boolean contains(CharSequence seq)

Note: CharSequence is an interface that is implemented by String class, Therefore we use string as an argument in contains() method. 

Example 

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("Found soft?: " + bool);

        boolean seqFound = test.contains("war");

        System.out.println("Found war? " + seqFound);

        boolean sqFound = test.contains("wr");

        System.out.println("Found wr?: " + sqFound);

    }

}

Output

Found soft?: true
Found war? true
Found wr?: false

 Way 8: Matching String Start and End 

  • boolean startsWith(String str): Returns true if the string str exists at the starting of the given string, else false.
  • boolean startsWith(String str, int indexNum): Returns true if the string str exists at the starting of the index indexNum in the given string, else false.
  • boolean endsWith(String str): Returns true if the string str exists at the ending of the given string, else false.

Example:

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("Geek"));

        System.out.println(str.startsWith("is", 14));

        System.out.println(str.endsWith("port"));

    }

}

This article is contributed by Nitsdheerendra. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Last Updated :
16 Feb, 2023

Like Article

Save Article

There are four variants of indexOf() method. This article depicts about all of them, as follows: 
1.int indexOf() : This method returns the index within this string of the first occurrence of the specified character or -1, if the character does not occur.
 

Syntax:
int indexOf(char ch )
Parameters:
ch : a character.

Java

public class Index1 {

public static void main(String args[])

    {

        String gfg = new String("Welcome to geeksforgeeks");

        System.out.print("Found g first at position : ");

        System.out.println(gfg.indexOf('g'));

    }

}

Output

Found g first at position : 11

2. int indexOf(char ch, int strt ) : This method returns the index within this string of the first occurrence of the specified character, starting the search at the specified index or -1, if the character does not occur.
 

Syntax:
int indexOf(char ch, int strt)
Parameters:
ch :a character.
strt : the index to start the search from.

Java

public class Index2 {

public static void main(String args[])

    {

        String gfg = new String("Welcome to geeksforgeeks");

        System.out.print("Found g after 13th index at position : ");

        System.out.println(gfg.indexOf('g', 13));

    }

}

Output

Found g after 13th index at position : 19

3.int indexOf(String str) : This method returns the index within this string of the first occurrence of the specified substring. If it does not occur as a substring, -1 is returned.
 

Syntax:
int indexOf(String str)
Parameters:
str : a string.

Java

public class Index3 {

public static void main(String args[])

    {

        String Str = new String("Welcome to geeksforgeeks");

        String subst = new String("geeks");

        System.out.print("Found geeks starting at position : ");

        System.out.print(Str.indexOf(subst));

    }

}

Output

Found geeks starting at position : 11

4. int indexOf(String str, int strt) : This method returns the index within this string of the first occurrence of the specified substring, starting at the specified index. If it does not occur, -1 is returned. 
 

Syntax:
int indexOf(String str, int strt)
Parameters:
strt: the index to start the search from.
str : a string.
 

Java

public class Index4 {

public static void main(String args[])

    {

        String Str = new String("Welcome to geeksforgeeks");

        String subst = new String("geeks");

        System.out.print("Found geeks(after 14th index) starting at position : ");

        System.out.print(Str.indexOf(subst, 14));

    }

}

Output

Found geeks(after 14th index) starting at position : 19

Some related applications:
 

  • Finding out if a given character (maybe anything upper or lower case) is a vowel or consonant. 
    Implementation is given below: 
     

JAVA

class Vowels

{

    public static boolean vowel(char c)

    {

        return "aeiouAEIOU".indexOf(c)>=0;

    }

    public static void main(String[] args)

    {

        boolean isVowel = vowel('a');

                if(isVowel)

            System.out.println("Vowel");

        else

            System.out.println("Consonant");

    }

}

This article is contributed by Astha Tyagi. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Last Updated :
07 Sep, 2021

Like Article

Save Article

Понравилась статья? Поделить с друзьями:
  • Дубай до того как нашли нефть
  • Как найти массу компонентов смеси
  • Как найти ниндзя в симс
  • Отправленные документы в налоговой как найти
  • Как найти тангенс в равнобедренном треугольнике формула