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

Тип strings.Replacer

Тип strings.Replacer представляет собой структуру, которая выполняет множественные замены подстрок в строке. Он создается с помощью функции strings.NewReplacer, которая принимает пары "старая подстрока - новая подстрока" в качестве аргументов. Первый аргумент - это искомая подстрока, второй - строка, на которую ее нужно заменить, третий - следующая искомая подстрока, четвертый - следующая замена и так далее. Основной метод Replace выполняет замену в переданной строке и возвращает новую строку с выполненными заменами. Тип strings.Replacer особенно эффективен, когда нужно выполнить множество замен в одном проходе по строке или когда одни и те же правила замены применяются многократно.

Синтаксис

replacer := strings.NewReplacer(old1, new1, old2, new2, ...) result := replacer.Replace(str)

Пример

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

package main import ( "fmt" "strings" ) func main() { replacer := strings.NewReplacer("a", "x", "b", "y", "c", "z") res := replacer.Replace("abcde") fmt.Println(res) }

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

"xyzde"

Пример

Давайте заменим несколько фраз в тексте с помощью Replacer:

package main import ( "fmt" "strings" ) func main() { replacer := strings.NewReplacer("hello", "hi", "world", "go", "golang", "go") text := "hello world and golang" res := replacer.Replace(text) fmt.Println(res) }

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

"hi go and go"

Пример

Если заменяемые строки пересекаются, Replacer обрабатывает замены в порядке их определения, но с учетом того, что замены не применяются рекурсивно к уже замененным частям:

package main import ( "fmt" "strings" ) func main() { replacer := strings.NewReplacer("ab", "x", "bc", "y") res := replacer.Replace("abc") fmt.Println(res) }

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

"xc"

В строке "abc" подстрока "ab" заменяется на "x", а оставшаяся часть "c" не заменяется, так как подстрока "bc" пересекается с уже обработанной частью.

Пример

Для более эффективного многократного использования одного и того же набора замен, можно создать Replacer один раз и использовать его множество раз:

package main import ( "fmt" "strings" ) func main() { replacer := strings.NewReplacer("foo", "bar", "baz", "qux") str1 := "foo and baz" res1 := replacer.Replace(str1) fmt.Println(res1) str2 := "baz and foo" res2 := replacer.Replace(str2) fmt.Println(res2) }

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

"bar and qux" "qux and bar"

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

  • функцию strings.NewReplacer,
    которая создает новый Replacer с заданными правилами замены
  • функцию strings.Replace,
    которая заменяет ограниченное количество вхождений подстроки
  • функцию strings.ReplaceAll,
    которая заменяет все вхождения одной подстроки на другую
  • функцию strings.Trim,
    которая удаляет указанные символы из строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить