Функция replaceFirst

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

Синтаксис

kotlinfun String.replaceFirst(regex: Regex, replacement: String): String
kotlinfun String.replaceFirst(
  regex: Regex, 
  transform: (MatchResult) -> CharSequence
): String

Пример

Замена только первого совпадения цифр в строке:

kotlinval text = "abc123def456"
val result = text.replaceFirst(Regex("\\d+"), "NUM")
println(result) // "abcNUMdef456"

Пример

Замена первого вхождения даты с изменением формата:

kotlinval text = "Date: 2023-12-25, Another: 2024-01-01"
val result = text.replaceFirst(Regex("(\\d{4})-(\\d{2})-(\\d{2})"), "$3.$2.$1")
println(result) // "Date: 25.12.2023, Another: 2024-01-01"

Пример

Использование лямбды для сложной замены первого совпадения:

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

Пример

Замена только первого вхождения слова без учета регистра:

kotlinval text = "HELLO world hello everyone"
val result = text.replaceFirst(
  Regex("hello", RegexOption.IGNORE_CASE), 
  "Hi"
)
println(result) // "Hi world hello everyone"

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

  • класс Regex,
    для работы с регулярными выражениями
  • функцию replace,
    которая заменяет все совпадения регулярного выражения
  • функцию find,
    которая находит первое совпадение регулярного выражения
  • функцию replaceRange,
    которая заменяет указанный диапазон в строке