Функция strings.LastIndexFunc

Функция strings.LastIndexFunc ищет в строке последний символ, для которого переданная пользовательская функция возвращает true. Она возвращает индекс первого байта найденного символа или -1, если ни один символ не удовлетворяет условию. Первым параметром функция принимает строку для поиска, вторым - функцию-предикат, которая определяет условие поиска.

Синтаксис

gostrings.LastIndexFunc(s string, f func(rune) bool) int

Пример

Давайте найдем индекс последней цифры в строке "abc123def456":

gopackage main

import (
  "fmt"
  "strings"
  "unicode"
)

func main() {
  s := "abc123def456"
  res := strings.LastIndexFunc(s, unicode.IsDigit)
  fmt.Println(res)
}

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

go11

Пример

Давайте найдем индекс последней буквы в строке "12345abcde":

gopackage main

import (
  "fmt"
  "strings"
  "unicode"
)

func main() {
  s := "12345abcde"
  res := strings.LastIndexFunc(s, unicode.IsLetter)
  fmt.Println(res)
}

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

go9

Пример

Давайте используем пользовательскую функцию для поиска последнего символа 'x' в строке:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  s := "xabcxdefxghi"
  res := strings.LastIndexFunc(s, func(r rune) bool {
    return r == 'x'
  })
  fmt.Println(res)
}

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

go9

Пример

Давайте попробуем найти символ, которого нет в строке:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  s := "abcde"
  res := strings.LastIndexFunc(s, func(r rune) bool {
    return r == 'x'
  })
  fmt.Println(res)
}

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

go-1

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

  • функцию strings.IndexFunc,
    которая находит индекс первого символа, удовлетворяющего условию
  • функцию strings.LastIndex,
    которая находит индекс последнего вхождения подстроки
  • функцию strings.LastIndexAny,
    которая находит индекс последнего символа из набора
  • функцию strings.ContainsRune,
    которая проверяет наличие конкретного рунического символа