РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
213 of 1593 menu

Функция utf8.RuneCount

Функция utf8.RuneCount подсчитывает количество рун в срезе байт. В отличие от встроенной функции len, которая возвращает количество байт, utf8.RuneCount правильно обрабатывает многобайтовые символы UTF-8. В первый параметр мы передаем срез байт (тип []byte), для которого нужно подсчитать количество рун. Функция возвращает количество рун в виде целого числа (тип int).

Синтаксис

utf8.RuneCount(b []byte) int

Пример

Давайте подсчитаем количество рун в строке, содержащей только ASCII-символы:

package main import ( "fmt" "unicode/utf8" ) func main() { b := []byte("abcde") res := utf8.RuneCount(b) fmt.Println(res) }

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

5

Пример

Давайте подсчитаем количество рун в строке, содержащей многобайтовые символы UTF-8:

package main import ( "fmt" "unicode/utf8" ) func main() { b := []byte("Привет, мир!") res := utf8.RuneCount(b) fmt.Println(res) }

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

11

Пример

Давайте сравним результаты utf8.RuneCount и встроенной функции len для строки с эмодзи:

package main import ( "fmt" "unicode/utf8" ) func main() { b := []byte("👍👎") resLen := len(b) resCount := utf8.RuneCount(b) fmt.Println(resLen) fmt.Println(resCount) }

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

8 2

Как видите, utf8.RuneCount возвращает правильное количество рун (2), а len возвращает количество байт (8), так как каждый эмодзи занимает 4 байта в кодировке UTF-8.

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

  • функцию utf8.RuneCountInString,
    которая подсчитывает количество рун в строке
  • функцию utf8.DecodeRune,
    которая декодирует первую руну из среза байт
  • функцию utf8.DecodeRuneInString,
    которая декодирует первую руну из строки
  • функцию utf8.Valid,
    которая проверяет, является ли срез байт валидным UTF-8
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить