Функция replaceAll

Функция replaceAll объекта Regex выполняет замену всех фрагментов входной строки, соответствующих шаблону регулярного выражения. Это метод самого объекта Regex, а не строки.

Синтаксис

kotlinfun Regex.replaceAll(
  input: CharSequence, 
  replacement: String
): String
kotlinfun Regex.replaceAll(
  input: CharSequence, 
  transform: (MatchResult) -> CharSequence
): String

Пример

Замена всех цифр в строке на символ подчеркивания с использованием replaceAll Regex:

kotlinval text = "Order 123, Price 45.67, Count 8"
val regex = Regex("\d+")
val result = regex.replaceAll(text, "_")
println(result)

Результат выполнения кода:

kotlinString "Order _, Price _._, Count _"

Пример

Использование функции преобразования для динамической замены найденных чисел:

kotlinval text = "5 apples, 3 oranges, 10 bananas"
val regex = Regex("\d+")
val result = regex.replaceAll(text) { match ->
  (match.value.toInt() * 2).toString()
}
println(result)

Результат выполнения кода:

kotlinString "10 apples, 6 oranges, 20 bananas"

Пример

Удаление всех пробельных символов с помощью replaceAll Regex:

kotlinval text = "K o t l i n   P r o g r a m m i n g"
val regex = Regex("\s+")
val result = regex.replaceAll(text, "")
println(result)

Результат выполнения кода:

kotlinString "KotlinProgramming"

Пример

Замена всех email-адресов в тексте на маскированную версию:

kotlinval text = "Contact: john@example.com or mary@test.org"
val regex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
val result = regex.replaceAll(text) { match ->
  val email = match.value
  val parts = email.split("@")
  parts[0].take(2) + "***@" + parts[1]
}
println(result)

Результат выполнения кода:

kotlinString "Contact: jo***@example.com or ma***@test.org"

Пример

Замена всех дат в формате YYYY-MM-DD на DD.MM.YYYY с использованием групп:

kotlinval text = "Dates: 2023-12-25, 2024-01-01, 2024-05-15"
val regex = Regex("(\d{4})-(\d{2})-(\d{2})")
val result = regex.replaceAll(text, "..")
println(result)

Результат выполнения кода:

kotlinString "Dates: 25.12.2023, 01.01.2024, 15.05.2024"

Смотрите также

  • функцию replace,
    которая работает аналогично, но применяется с строке
  • функцию replaceFirst,
    которая заменяет только первое совпадение регулярного выражения
  • функцию matches,
    которая проверяет полное соответствие строки регулярному выражению
  • функцию split,
    которая разделяет строку по регулярному выражению