РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
440 of 1593 menu

Метод regexp.Regexp.ReplaceAllStringFunc

Метод ReplaceAllStringFunc интерфейса Regexp выполняет замену всех подстрок в строке, которые соответствуют регулярному выражению. В отличие от ReplaceAllString, где замена статична, этот метод принимает пользовательскую функцию, которая определяет, на что заменить каждое найденное совпадение. Метод получает исходную строку и функцию, которая для каждой найденной подстроки возвращает строку замены.

Синтаксис

re.ReplaceAllStringFunc(src string, repl func(string) string) string

Пример

Давайте заменим все цифры в строке на их квадраты:

package main import ( "fmt" "regexp" "strconv" ) func main() { re := regexp.MustCompile(`\d`) res := re.ReplaceAllStringFunc("a1b2c3", func(s string) string { num, _ := strconv.Atoi(s) return strconv.Itoa(num * num) }) fmt.Println(res) }

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

"a1b4c9"

Пример

Давайте заменим все найденные слова на их длину:

package main import ( "fmt" "regexp" "strconv" ) func main() { re := regexp.MustCompile(`[a-z]+`) res := re.ReplaceAllStringFunc("hello world go", func(s string) string { return strconv.Itoa(len(s)) }) fmt.Println(res) }

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

"5 5 2"

Пример

Давайте преобразуем все найденные буквенные последовательности в верхний регистр:

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`[a-z]+`) res := re.ReplaceAllStringFunc("hello world", func(s string) string { return strings.ToUpper(s) }) fmt.Println(res) }

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

"HELLO WORLD"

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

  • метод ReplaceAllFunc,
    который работает с байтовыми срезами
  • метод ReplaceAllString,
    который заменяет все совпадения на статическую строку
  • метод ReplaceAllLiteralString,
    который заменяет все совпадения на литеральную строку
  • метод FindAllString,
    который находит все совпадения с регулярным выражением
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить