Замена строк Java

У меня есть эта функция, чтобы проверить, появляются ли некоторые слова в определенной строке, а затем окружить их заданным символом.

Приведенный выше код работает как талисман, однако, поскольку слова в строковом массиве "words" всегда в нижнем регистре, слова также будут в нижнем регистре. Как я могу исправить эту проблему?

Входы:

BufferedReader in = "Hello, my name is John:";
char c = '*';
String [] words = {"hello","john"}; 

Желаемый вывод:

BufferedWriter out = "*Hello*, my name is *John*:";

Фактический вывод:

BufferedWriter out = "*hello*, my name is *john*";

Код:

public void replaceString(BufferedReader in, BufferedWriter out, char c, String[] words){

String line_in = in.readLine();

    while (line_in != null) {
        for (int j = 0; j < words.length; j++) {

            line_in = line_in.replaceAll("(?i)" + words[j], bold + words[j]
                    + bold);

        }

        out.write(line_in);
        out.newLine();
        line_in = in.readLine();

    }
}

1 ответ

Решение

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

line_in.replaceAll("(?i)(" + words[j] + ")", bold + "$1" + bold);
//                      \________________/           \/
//                         capture word          reference it
Другие вопросы по тегам