Функция strings.IndexRune
Функция strings.IndexRune возвращает индекс (позицию) первого вхождения указанной руны в строке. В первый параметр мы передаем строку для поиска, во второй параметр мы передаем руну (значение типа rune), которую нужно найти. Если руна не найдена, функция возвращает -1. Важно отметить, что функция работает с рунами, а не с байтами, поэтому она корректно обрабатывает многобайтовые символы (например, символы Unicode).
Синтаксис
strings.IndexRune(str, r)
Пример
Давайте найдем индекс руны 'c' в строке "abcde":
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.IndexRune("abcde", 'c')
fmt.Println(res)
}
Результат выполнения кода:
2
Пример
Давайте найдем индекс руны 'x' в строке "abcde". Поскольку такой руны нет, функция вернет -1:
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.IndexRune("abcde", 'x')
fmt.Println(res)
}
Результат выполнения кода:
-1
Пример
Давайте найдем индекс русской руны 'г' в строке "абвгде". Функция корректно обрабатывает многобайтовые символы Unicode:
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.IndexRune("абвгде", 'г')
fmt.Println(res)
}
Результат выполнения кода:
6
Обратите внимание, что функция возвращает индекс в байтах, а не в символах. В строке "абвгде" каждая русская буква занимает 2 байта, поэтому индекс руны 'г' (третий символ) равен 6 (2 байта * 3 символа).
Смотрите также
-
функцию
strings.Index,
которая возвращает индекс первого вхождения подстроки -
функцию
strings.IndexAny,
которая возвращает индекс первого вхождения любого символа из набора -
функцию
strings.IndexByte,
которая возвращает индекс первого вхождения байта -
функцию
strings.LastIndex,
которая возвращает индекс последнего вхождения подстроки