indexOf() в Java - найти в строке символ и его индекс
Данная статья:
- написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
- это одна из статей из нашего "Самоучителя по Java"
Метод indexOf() в Java
Метод indexOf() ищет в строке заданный символ или строку, и их возвращает индекс (т.е. порядковый номер). Метод:
- возвращает индекс, под которым символ или строка первый раз появляется в строке;
- возвращает (-1) если символ или строка не найдены.
Метод также может искать символ или строку, начиная с указанного индекса.
Библиотека:
1 |
Java.lang.String |
Синтаксис метода:
1 2 |
public int indexOf(char ch) public int indexOf(char ch, int fromIndex) |
или
1 2 |
public int indexOf(String s) public int indexOf(String s, int fromIndex) |
Вызов:
1 2 |
int index = str1.indexOf(myChar); int index = str1.indexOf(myChar, start); |
или
1 2 |
int index = str1.indexOf(myString); int index = str1.indexOf(myString, start); |
Пример 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 с нуля. Детальнее на сайте.