Не все слово в тексте заменились используя метода класса String

Мне удалось заменить слово Hello на звезды: *, но не все заменилось.

Вот Код:

        String text = "Hello Java Programmers Hello Bad Hello World Hello Hello";
        String word = "Hello";
        int wordPos = text.indexOf(word);
        if (wordPos > -1) {
                String star = "*".repeat((word.length()));
                int allStar = wordPos + word.length();
                text = text.substring(0, wordPos) + star + text.substring(allStar);
            }
        }
        System.out.println(text);

Результат:

***** Java Programmers Hello Bad Hello World Hello Hello

Если кто-то знает, как решить эту проблему - спасибо заранее!))


Ответы (2 шт):

Автор решения: стасевич

Метод replaceAll() — заменяет каждую подстроку данной строки, которая соответствует заданному регулярному выражению, с данной заменой, другими словами — метод позволяет заменить слово в строке.

        String text = "Hello Java Programmers Hello Bad Hello World Hello Hello";
//                                  что меняем | на что меняем
        String result = text.replaceAll("Hello","****");

        System.out.println(result);
        // вывод - **** Java Programmers **** Bad **** World **** ****
→ Ссылка
Автор решения: flawe

При помощи метода replace, Вы можете заменить слово в строке на необходимую вам строку/символ. Под Ваше ТЗ я подготовил код ниже

    public String replaceWord(String s, String word, char symbol) {
        return s.replace(word, String.valueOf(symbol).repeat(word.length()));
    }

Использование:

text = replaceWord(text, "Hello", '*');
//TODO
→ Ссылка