Функция strings.SplitAfterN

Функция strings.SplitAfterN разделяет исходную строку на подстроки по указанному разделителю, сохраняя сам разделитель в каждой полученной части, и ограничивает количество возвращаемых подстрок. В первый параметр мы передаем строку для разделения, во второй параметр — разделитель, по которому будет происходить разбиение, а в третий параметр — максимальное количество частей, которое нужно вернуть.

Синтаксис

gostrings.SplitAfterN(s, sep, n)

Пример Разделение с ограничением количества частей

Давайте разделим строку "a,b,c,d,e" по разделителю "," с ограничением в три части:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfterN("a,b,c,d,e", ",", 3)
  fmt.Println(res)
}

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

go[a, b, c,d,e]

Пример Разделение без ограничения

Если передать отрицательное значение в третий параметр, функция вернет все возможные части:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfterN("a,b,c,d,e", ",", -1)
  fmt.Println(res)
}

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

go[a, b, c, d, e]

Пример Разделение с ограничением в одну часть

Если указать n = 1, функция вернет слайс с одной частью, содержащей всю исходную строку:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfterN("a,b,c,d,e", ",", 1)
  fmt.Println(res)
}

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

go[a,b,c,d,e]

Пример Разделение с разделителем из нескольких символов

Разделитель может состоять из нескольких символов:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfterN("hello::world::go", "::", 2)
  fmt.Println(res)
}

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

go[hello:: world::go]

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

  • функцию strings.Split,
    которая разделяет строку по разделителю без сохранения разделителя
  • функцию strings.SplitAfter,
    которая разделяет строку с сохранением разделителя, но без ограничения количества частей
  • функцию strings.SplitN,
    которая разделяет строку с ограничением количества частей, но без сохранения разделителя
  • функцию strings.Join,
    которая объединяет элементы слайса в строку с указанным разделителем