Рубрики
Без рубрики

Регулярное выражение Java: часть 6 – Замена текста

Есть много случаев, когда нам нужно заменить строку или определенные символы. Например, нам нужно заменить ошибочные или избыточные символы правильными. Язык java.lang. Класс String в Java…

Автор оригинала: Sera.Ng.

Есть много случаев, когда нам нужно заменить строку или определенные символы. Например, нам нужно заменить ошибочные или избыточные символы правильными. java.lang. Класс String в Java поддерживает 2 метода для этих целей: replace() и заменить все() Например, у меня есть строка следующего содержания:

"This is a strIng wIth some typos"

В строке есть несколько заглавных букв I, и я хочу заменить их строчными буквами i лучше. Код:

public class Demo {
    public static void main(String[] args) {
        String text = " This is a strIng wIth some typos ";
        text = text.replace("I", "i");
        System.out.println(text);
    }
}

В приведенном выше коде я вызвал метод replace() в классе String:

text = text.replace("I", "i");

Метод replace() принимает 2 параметра:

  • первый – это символ или подстрока, которую вы хотите заменить
  • второй – это новый символ или подстрока

Метод replace() заменит все вхождения старого символа или подстроки новым. И в нашем примере кода метод заменит все символы верхнего регистра I символами нижнего регистра i. Давайте запустим программу и посмотрим результат:

This is a string with some typos

Однако метод replace() не принимает регулярное выражение в качестве своего первого параметра. Поэтому он не будет работать в тех случаях, когда мы хотим заменить определенные символы на основе определенного шаблона. Например, если у нас есть строка, подобная следующей:

"This is 34a string 23that contain56s many typos"

В приведенной выше строке мы хотим удалить все цифры. И было бы гораздо удобнее, если бы мы могли указать \d в качестве шаблона для удаления. Конечно, мы можем использовать метод replace() для выполнения задачи, но тогда нам нужно указать отдельные символы в качестве замены. У нас есть лучшее решение: метод replaceAll () . Метод replaceAll() работает аналогично аналогу replaceall() с одним существенным отличием: он поддерживает регулярное выражение в качестве своего первого параметра. Давайте посмотрим код:

public class Demo {
    public static void main(String[] args) {
        String text = "This is 34a string 23that contain56s many typos";
        text = text.replaceAll("\\d", "");
        System.out.println(text);
    }
}

В приведенном выше коде я вызвал метод String.replaceAll() следующим образом:

text = text.replaceAll("\\d", "");
  • Первым параметром должен быть \d, потому что мы хотим удалить все цифры во входной строке.
  • Второй параметр – это новая строка, подлежащая замене. Поскольку мы хотим удалить цифры, здесь следует применить пустой символ.

Давайте запустим программу, и мы увидим, что все цифры исчезли:

This is a string that contains many typos

Давайте возьмем еще один.

String s2 = "This is te$xt wi%th s\*ome spe!cial characters in in";
        String nonePrintableCharsPattern = "[^\\w ]";
        String newString2 = s2.replaceAll(nonePrintableCharsPattern, "");
        System.out.println(newString2);

У меня есть еще один текст, содержащий несколько непреднамеренных специальных символов: знак доллара, знак процента, символ звезды и восклицательный знак. Эти специальные символы необходимо удалить. Поскольку существует много специальных символов, в шаблонах проще указать, что мы хотим сохранить, а не то, что мы хотим удалить. Поэтому в шаблоне я использую символ-каретку ( ^ ), за которым следует пробел \wanda. Этот шаблон означает: удалите все, кроме тех, которые представлены символом w и пробелом . Почему пустое место? Потому что символ \w представляет только символы верхнего и нижнего регистра от a до z и цифры от 0 до 9, не включая пробелы. Поэтому, если мы не укажем пробелы в нашем шаблоне, все пробелы будут удалены. Запустите программу, и вы увидите результат:

This is text with some special characters in it

Предыдущая часть

Следующая часть

Посещение learnbyproject.net для бесплатных Курсов регулярного выражения и других бесплатных курсов

Оригинал: “https://www.codementor.io/@seranguyen/java-regular-expression-part-6-replacing-text-rc9xnxrhl”