Функция strings.ContainsRune

Функция strings.ContainsRune проверяет, содержится ли в строке определенная руна (Unicode-символ). Она возвращает true, если руна найдена, и false в противном случае. В отличие от strings.Contains, эта функция ищет именно руну, а не подстроку, что особенно полезно при работе с многобайтовыми символами, например, эмодзи или иероглифами.

Первым параметром функция принимает строку для поиска, вторым параметром — руну (тип rune), которую нужно найти.

Синтаксис

gostrings.ContainsRune(str, ch)

Пример

Давайте проверим, содержит ли строка 'Привет' букву 'и':

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.ContainsRune("Привет", 'и')
  fmt.Println(res)
}

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

gotrue

Руна 'и' входит в состав слова "Привет", поэтому функция вернула true.

Пример

Теперь проверим, содержит ли та же строка руну 'z':

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.ContainsRune("Привет", 'z')
  fmt.Println(res)
}

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

gofalse

Руны 'z' в строке нет, поэтому результат — false.

Пример

Функция корректно работает с многобайтовыми символами, например, с эмодзи. Проверим наличие эмодзи '😊' в строке:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  res := strings.ContainsRune("Hello 😊 World", '😊')
  fmt.Println(res)
}

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

gotrue

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

  • функцию strings.Contains,
    которая проверяет наличие подстроки в строке
  • функцию strings.ContainsAny,
    которая проверяет наличие любого символа из набора
  • функцию strings.IndexRune,
    которая возвращает позицию первого вхождения руны
  • функцию strings.Count,
    которая подсчитывает количество вхождений подстроки