Вот мой способ сделать это:
private String replaceAllIgnoreCase(final String text, final String search, final String replacement){
if(search.equals(replacement)) return text;
final StringBuffer buffer = new StringBuffer(text);
final String lowerSearch = search.toLowerCase(Locale.CANADA);
int i = 0;
int prev = 0;
while((i = buffer.toString().toLowerCase(Locale.CANADA).indexOf(lowerSearch, prev)) > -1){
buffer.replace(i, i+search.length(), replacement);
prev = i+replacement.length();
}
return buffer.toString();
}
Кажется, работает безупречно до моей степени. Хорошая вещь в том, чтобы сделать это по-моему, в моем решении нет регулярных выражений, означающих, что если вы хотите заменить скобку или знак плюс (или любой другой метасимвол в этом отношении), это на самом деле заменит текст тем, чем он является на самом деле. есть, а не то, что это означает в регулярном выражении. Надеюсь, это помогло.