2015-03-01 2 views
1

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

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

Входы:

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(); 

    } 
} 

ответ

3

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

line_in.replaceAll("(?i)(" + words[j] + ")", bold + "$1" + bold); 
//      \________________/   \/ 
//       capture word   reference it 
Смежные вопросы