Замена строк в Java: replace(), replaceAll() и replaceFirst() подробно
Класс Java String предлагает три мощных метода замены для эффективной модификации текста: replace(), replaceAll() и replaceFirst(). Каждый служит своей цели и оптимизирован для разных сценариев.
Java String replace()
Метод replace() выполняет прямую подстановку символа или строки. Сканирует всю строку и заменяет каждое вхождение цели на замену, возвращая новый экземпляр String. Идеален для прямой, не-regex подстановки.
Синтаксис
public String replace(CharSequence target, CharSequence replacement)
Параметры
target— последовательность символов для замены.replacement— последовательность, которая заменитtarget.
Пример
public class ReplaceExample {
public static void main(String[] args) {
String original = "the quick fox jumped";
System.out.println("Original: " + original);
System.out.println("After replace(\"fox\", \"dog\"): " + original.replace("fox", "dog"));
System.out.println("After replace('t', 'a'): " + original.replace('t', 'a'));
}
}
Вывод
Original: the quick fox jumped
After replace("fox", "dog"): the quick dog jumped
After replace('t', 'a'): ahe quick fox jumped
Java String replaceAll()
Метод replaceAll() использует регулярное выражение (regex) для поиска совпадений во всей строке. Затем заменяет каждое совпадение на указанную замену, возвращая новую строку. Идеально для pattern-based замен.
Сигнатура
public String replaceAll(String regex, String replacement)
Параметры
regex— regex-паттерн для поиска подстрок.replacement— строка, заменяющая каждое совпадение.
Пример
public class ReplaceAllExample {
public static void main(String[] args) {
String text = "Guru99 is a site providing free tutorials";
String withoutSpaces = text.replaceAll("\\s", "");
System.out.println(withoutSpaces);
}
}
Вывод
Guru99isasiteprovidingfreetutorials
Java String replaceFirst()
Метод replaceFirst() ведёт себя как replaceAll(), но затрагивает только первое найденное совпадение. Сканирует от начала строки и останавливается после первой замены — полезно, когда нужно изменить лишь одиночное вхождение.
Сигнатура
public String replaceFirst(String regex, String replacement)
Параметры
regex— regex-паттерн, идентифицирующий целевую подстроку.replacement— строка, заменяющая первое совпадение.
Пример
public class ReplaceFirstExample {
public static void main(String[] args) {
String sentence = "This website providing free tutorials";
String updated = sentence.replaceFirst("s", "9");
System.out.println(updated);
}
}
Вывод
Thi9 website providing free tutorials
Выбор правильного метода
- Используйте
replace()для простых, не-regex подстановок. - Выбирайте
replaceAll()когда нужно заменить все совпадения regex-паттерна. - Оптимален
replaceFirst()если только первое вхождение должно быть изменено.
Эти методы неизменяемы; они никогда не меняют исходную строку, а возвращают новый экземпляр, обеспечивая потокобезопасность и предсказуемое поведение в конкурентных средах.
java
- Освоение строк в Java: создание, методы и лучшие практики
- Строковые представления в Java Enums: настройка toString() и лучшие практики
- Типы аннотаций в Java: предопределенные, кастомные и мета-аннотации
- Метод String.length() в Java: как получить длину строки (пример)
- Освоение String.indexOf() в Java: поиск подстрок и практические примеры
- Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
- Освоение String.compareTo() в Java: синтаксис, сценарии использования и примеры
- Метод String.contains() в Java: как проверить наличие подстроки — примеры
- Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
- Java String toLowerCase() и toUpperCase(): преобразование регистра с учётом локали