cpp

Байтовые слайсы. Замена фрагментов

Выполнить замену фрагментов внутри байтового слайса позволяют следующие функции:

  • Replace() — выполняет замену фрагмента old фрагментом new в слайсе s и возвращает новый слайс. Формат функции:
bytes.Replace(s []byte, old []byte, new []byte, n int) []byte

Максимальное число замен задается с помощью параметра n. Если параметр имеет отрицательное значение, то ограничения нет. Пример:

arr := []byte("Привет, Петя")
arr2 := bytes.Replace(arr, []byte("Петя"), []byte("Вася"), 1)
fmt.Printf("%q\n", arr2) // "Привет, Вася"
arr = []byte("1 1 1 1 1")
arr2 = bytes.Replace(arr, []byte("1"), []byte("2"), 3)
fmt.Printf("%q\n", arr2) // "2 2 2 1 1"
arr2 = bytes.Replace(arr, []byte("1"), []byte("2"), -1)
fmt.Printf("%q\n", arr2) // "2 2 2 2 2"
  • ReplaceAll() — выполняет замену всех фрагментов old фрагментом new в слайсе s и возвращает новый слайс. Формат функции:
bytes.ReplaceAll(s []byte, old []byte, new []byte) []byte

Пример:

arr := []byte("Привет, Петя")
arr2 := bytes.ReplaceAll(arr, []byte("Петя"), []byte("Вася"))
fmt.Printf("%q\n", arr2) // "Привет, Вася"
arr = []byte("1 1 1 1 1")
arr2 = bytes.ReplaceAll(arr, []byte("1"), []byte("2"))
fmt.Printf("%q\n", arr2) // "2 2 2 2 2"
  • Map() — выполняет замену всех символов в слайсе s в соответствии с функцией mapping и возвращает новый слайс. Если функция mapping возвращает отрицательное значение, то символ не добавляется в новый слайс. Формат функции:
bytes.Map(mapping func(r rune) rune, s []byte) []byte

Пример:

arr := []byte("12332103")
arr2 := bytes.Map(func(r rune) rune {
   if r == '2' {
      return '_' // Заменяем символ
   } else if r == '0' {
      return -1  // Удаляем символ
    }
   return r      // Оставляем символ без изменений
}, arr)
fmt.Println(string(arr2)) // 1_33_13

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp