Java:
Поиск и замена текста
Как это сделать:
Поиск и замена в Java – это просто благодаря классу String
и его методу replace()
. Вот как это делается:
public class ReplaceDemo {
public static void main(String[] args) {
String originalText = "The quick brown fox jumps over the lazy dog";
String modifiedText = originalText.replace("lazy", "energetic");
System.out.println("До: " + originalText);
System.out.println("После: " + modifiedText);
}
}
Вывод:
До: The quick brown fox jumps over the lazy dog
После: The quick brown fox jumps over the energetic dog
Теперь, для шаблонов или более сложных замен, в игру вступают Pattern
и Matcher
:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexReplaceDemo {
public static void main(String[] args) {
String originalText = "There are 31,536,000 seconds in 365 days.";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(originalText);
String modifiedText = matcher.replaceAll("#");
System.out.println("До: " + originalText);
System.out.println("После: " + modifiedText);
}
}
Вывод:
До: There are 31,536,000 seconds in 365 days.
После: There are # seconds in # days.
Подробнее:
Метод replace()
восходит к самым ранним дням Java. Он является частью неизменяемого класса String
, что означает, что каждый раз, используя его, вы создаете новую строку. Очень экологично, без отходов старого материала.
Но что насчет Pattern
и Matcher
, спросите вы? Эти классы являются частью API регулярных выражений (regex) в Java, представленных в Java 1.4. Они добавляют мощности поиску и замене, позволяя обнаруживать сложные шаблоны и динамически изменять текст. Это как использование скальпеля вместо кувалды.
К тому же, есть replaceAll()
и replaceFirst()
, два метода класса Matcher
, которые точно настраивают ваши текстовые преобразования, заменяя все вхождения или только первое совпадение.
Еще одна альтернатива - использование классов StringBuffer
или StringBuilder
, когда вы имеете дело с тонной модификаций, потому что в отличие от String
, эти буферы являются изменяемыми.
Смотрите также:
- Документация Java String
- Документация Java Pattern
- Документация Matcher
- Учебник по регулярным выражениям
Для более практической практики посетите RegexOne (https://regexone.com), это отличный ресурс для повышения ваших навыков работы с regex.