Как узнать все вхождения символа в строке в java?

Пользователь

от marlen , в категории: Java , 7 месяцев назад

Как узнать все вхождения символа в строке в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , 6 месяцев назад

@marlen 

В Java можно использовать метод indexOf(char ch, int fromIndex) класса String, чтобы найти индекс первого вхождения символа ch в строке, начиная с позиции fromIndex. Этот метод будет возвращать -1, если символ не найден.


Чтобы найти все вхождения символа в строке, можно использовать цикл, повторяющийся до тех пор, пока не будет достигнут конец строки. В каждой итерации цикла можно использовать метод indexOf() для поиска следующего вхождения символа, начиная с позиции, следующей после предыдущего вхождения.


Вот пример кода, который иллюстрирует этот подход:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char ch = 'o';

        int index = str.indexOf(ch);
        while (index >= 0) {
            System.out.println("Найдено вхождение символа '" + ch + "' в позиции " + index);
            index = str.indexOf(ch, index + 1);
        }
    }
}


Этот код выведет следующий результат:

1
2
Найдено вхождение символа 'o' в позиции 4
Найдено вхождение символа 'o' в позиции 7


Обратите внимание, что индексы символов считаются с 0.

Пользователь

от buster , 2 месяца назад

@marlen 

Если вам нужно также учитывать регистр символов, при поиске вхождений, то можно использовать метод toCharArray() для преобразования строки в массив символов и сравнивать символы в нижнем регистре (или верхнем) с помощью метода Character.toLowerCase() (или Character.toUpperCase()).


Вот пример кода, который иллюстрирует поиск всех вхождений символа в строку, учитывая регистр символов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char ch = 'o';

        int index = str.indexOf(ch);
        while (index >= 0) {
            System.out.println("Найдено вхождение символа '" + ch + "' в позиции " + index);
            index = str.indexOf(ch, index + 1);
        }
    }
}


Этот код будет выдавать все вхождения символа 'o' в строке "Hello, World!", независимо от регистра символов.