Строки в 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 неизменяемы, заменить символ в строке можно, взяв исходную строку и создав новую строку, в которой будет заменён требуемый символ (или последовательность символов).