Функция bytes.Replace

Функция bytes.Replace заменяет первые n вхождений подстроки old на строку new в исходном байтовом слайсе. Первый параметр принимает исходный слайс байтов, второй — подстроку для замены, третий — строку для вставки, четвертый — количество замен. Если n меньше нуля, функция заменяет все вхождения. Возвращает новый слайс байтов с выполненными заменами.

Синтаксис

gobytes.Replace(s, old, new []byte, n int) []byte

Пример

Давайте заменим первые два вхождения подстроки '12' в строке '12123412' на подстроку 'XX':

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("12123412")
  old := []byte("12")
  new := []byte("XX")
  res := bytes.Replace(s, old, new, 2)
  fmt.Println(string(res))
}

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

go"XXXX3412"

Пример

Теперь давайте заменим все вхождения подстроки 'ab' в строке 'ababab' на подстроку '--', передав четвертый параметр равным -1:

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("ababab")
  old := []byte("ab")
  new := []byte("--")
  res := bytes.Replace(s, old, new, -1)
  fmt.Println(string(res))
}

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

go"--"--"--"

Пример

А если количество замен равно нулю, то исходный слайс остается без изменений. Давайте проверим это на строке '123123' с подстрокой '23':

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  s := []byte("123123")
  old := []byte("23")
  new := []byte("45")
  res := bytes.Replace(s, old, new, 0)
  fmt.Println(string(res))
}

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

go"123123"

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

  • функцию bytes.Contains,
    которая проверяет наличие подстроки в байтовом слайсе
  • функцию bytes.ReplaceAll,
    которая заменяет все вхождения подстроки
  • функцию bytes.Index,
    которая возвращает позицию первого вхождения подстроки
  • функцию strings.Replace,
    которая работает аналогично, но со строками