Откройте для себя несколько способов найти N-е вхождение подстроки в Java

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

Метод 1: использование IndexOf и циклов
Метод IndexOf в Java возвращает индекс первого вхождения указанной подстроки в заданной строке. Чтобы найти N-е вхождение, мы можем объединить IndexOf с циклом. Вот пример:

public static int findNthOccurrence(String str, String substr, int n) {
    int index = str.indexOf(substr);
    while (--n > 0 && index != -1) {
        index = str.indexOf(substr, index + 1);
    }
    return index;
}

Метод 2: использование счетчика и подстроки
Другой подход предполагает использование метода счетчика для определения общего количества вхождений подстроки, а затем использование метода подстроки для извлечения желаемого вхождения. Вот пример:

public static int findNthOccurrence(String str, String substr, int n) {
    int count = 0;
    int index = -1;
    while (count < n) {
        index = str.indexOf(substr, index + 1);
        if (index == -1) {
            break;
        }
        count++;
    }
    return index;
}

Метод 3: регулярные выражения
Регулярные выражения Java предоставляют мощный способ поиска и управления строками. Мы также можем использовать регулярные выражения, чтобы найти N-е вхождение подстроки. Вот пример:

import java.util.regex.*;
public static int findNthOccurrence(String str, String substr, int n) {
    Pattern pattern = Pattern.compile(substr);
    Matcher matcher = pattern.matcher(str);
    int count = 0;
    while (matcher.find()) {
        count++;
        if (count == n) {
            return matcher.start();
        }
    }
    return -1;
}

В этой статье мы рассмотрели три различных метода поиска N-го вхождения подстроки в Java. Используя IndexOf с циклами, счетчиком и подстрокой или регулярными выражениями, вы можете достичь желаемого результата. Выберите метод, который лучше всего соответствует вашим потребностям, исходя из производительности, читабельности и сложности вашей проблемы. Приятного кодирования!