Функция strings.SplitAfter

Функция strings.SplitAfter разделяет исходную строку на подстроки по указанному разделителю. В отличие от strings.Split, данная функция сохраняет разделитель в конце каждой полученной подстроки. Первым параметром функция принимает строку для разделения, вторым - строку-разделитель. Функция возвращает срез строк.

Синтаксис

gostrings.SplitAfter(str, sep)

Пример

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

gopackage main

import (
  "fmt"
  "strings"
)

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

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

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

Обратите внимание, что каждый элемент среза заканчивается запятой, которая является разделителем.

Пример

Разделим строку "123.456.789" по разделителю ".":

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfter("123.456.789", ".")
  fmt.Println(res)
}

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

go[123. 456. 789]

Пример

Рассмотрим разделение строки, которая не содержит указанный разделитель:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfter("abcde", "x")
  fmt.Println(res)
}

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

go[abcde]

Если разделитель не найден, функция возвращает срез с одним элементом - исходной строкой.

Пример

Разделим строку с несколькими подряд идущими разделителями "a,,b,c":

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.SplitAfter("a,,b,c", ",")
  fmt.Println(res)
}

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

go[a, , b, c]

При наличии нескольких разделителей подряд, пустые строки сохраняются в результирующем срезе.

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

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