Функция strings.IndexRune

Функция strings.IndexRune возвращает индекс (позицию) первого вхождения указанной руны в строке. В первый параметр мы передаем строку для поиска, во второй параметр мы передаем руну (значение типа rune), которую нужно найти. Если руна не найдена, функция возвращает -1. Важно отметить, что функция работает с рунами, а не с байтами, поэтому она корректно обрабатывает многобайтовые символы (например, символы Unicode).

Синтаксис

gostrings.IndexRune(str, r)

Пример

Давайте найдем индекс руны 'c' в строке "abcde":

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.IndexRune("abcde", 'c')
  fmt.Println(res)
}

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

go2

Пример

Давайте найдем индекс руны 'x' в строке "abcde". Поскольку такой руны нет, функция вернет -1:

gopackage main

import (
  "fmt"
  "strings"
)

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

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

go-1

Пример

Давайте найдем индекс русской руны 'г' в строке "абвгде". Функция корректно обрабатывает многобайтовые символы Unicode:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.IndexRune("абвгде", 'г')
  fmt.Println(res)
}

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

go6

Обратите внимание, что функция возвращает индекс в байтах, а не в символах. В строке "абвгде" каждая русская буква занимает 2 байта, поэтому индекс руны 'г' (третий символ) равен 6 (2 байта * 3 символа).

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

  • функцию strings.Index,
    которая возвращает индекс первого вхождения подстроки
  • функцию strings.IndexAny,
    которая возвращает индекс первого вхождения любого символа из набора
  • функцию strings.IndexByte,
    которая возвращает индекс первого вхождения байта
  • функцию strings.LastIndex,
    которая возвращает индекс последнего вхождения подстроки