Функция strings.Cut

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

Синтаксис

gobefore, after, found := strings.Cut(str, sep)

Пример

Давайте разделим строку "hello-world" по разделителю "-":

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  before, after, found := strings.Cut("hello-world", "-")
  fmt.Println("before:", before)
  fmt.Println("after:", after)
  fmt.Println("found:", found)
}

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

go"before: hello"
"after: world"
"found: true"

Пример

Если разделитель отсутствует в строке, функция вернет исходную строку в качестве первой части и пустую строку в качестве второй, а флаг будет равен false. Проверим это на примере:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  before, after, found := strings.Cut("abcde", "xyz")
  fmt.Println("before:", before)
  fmt.Println("after:", after)
  fmt.Println("found:", found)
}

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

go"before: abcde"
"after: "
"found: false"

Пример

Рассмотрим случай, когда разделитель находится в начале или в конце строки. Если строка начинается с разделителя, то первая часть будет пустой:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  before, after, found := strings.Cut("-hello", "-")
  fmt.Println("before:", before)
  fmt.Println("after:", after)
  fmt.Println("found:", found)
}

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

go"before: "
"after: hello"
"found: true"

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

  • функцию strings.CutPrefix,
    которая удаляет префикс из строки
  • функцию strings.CutSuffix,
    которая удаляет суффикс из строки
  • функцию strings.Split,
    которая разбивает строку по разделителю на слайс
  • функцию strings.SplitN,
    которая разбивает строку на ограниченное количество частей