Строки в Java представляют собой последовательности символов. Причём строки в Java иммутабельны, то есть неизменяемы – вы не можете изменить строку после её создания. Значит ли это, что невозможно изменить символ в строке?

Метод replace

Так как строки в Java неизменяемы, был создан метод replace, который создаёт новый экземпляр строки с заменёнными символами. Рассмотрим следующий код:

String s1 = "Hello amazing World!";
System.out.println(s1);
String s2 = s1.replace(' ', '_');
System.out.println(s2);

Здесь мы сначала создали первую строковую переменную со значением "Hello amazing World!", а затем создали вторую переменную, в которую записали результат замены символа пробела на символ подчёркивания – "Hello_amazing_World!".

Помимо замены одного символа у нас есть возможность заменять сразу последовательности символов:

String s3 = s1.replace("Hello", "Goodbye");
System.out.println(s3);

Метод replaceAll

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

String greeting = "Hello hello hello amazing World!";
String s4 = greeting.replaceAll("[Hh]ello", "goodbye");
System.out.println(s4);

Здесь мы заменяем все вхождения слов "Hello" и "hello" на слово "goodbye", используя регулярное выражение. С помощью метода replace нам пришлось бы производить замены дважды – для каждого слова.

В дополнение к методу replaceAll существует метод replaceFirst, который заменяет лишь первое вхождение:

String s5 = greeting.replaceFirst("[Hh]ello", "goodbye");
System.out.println(s5);

Чем отличаются replace от replaceAll

Различия между методами replace и replaceAll в том, что replace строго заменяет одну последовательность символов другой последовательностью, а replaceAll использует для замены регулярное выражение. В более простых случаях вам скорее всего подойдёт метод replace, а в более сложных – replaceAll, который позволит заменять сразу несколько вариаций символов.

Заключение

Так как строки в Java неизменяемы, заменить символ в строке можно, взяв исходную строку и создав новую строку, в которой будет заменён требуемый символ (или последовательность символов).

Как заменить символ в строке