Функция utf8.DecodeRuneInString

Функция utf8.DecodeRuneInString декодирует первый рун в строке UTF-8 и возвращает сам рун и количество байт, которые он занимает. В первый параметр функция принимает строку для декодирования. Если строка пустая или содержит некорректную UTF-8 последовательность, функция возвращает utf8.RuneError и размер 1 (для некорректных последовательностей) или 0 (для пустой строки).

Синтаксис

gor, size := utf8.DecodeRuneInString(str)

Пример

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

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := "abcde"
  r, size := utf8.DecodeRuneInString(str)
  fmt.Printf("Рун: %c, Размер: %d\n", r, size)
}

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

go"Рун: a, Размер: 1"

Пример

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

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := "абвгд"
  r, size := utf8.DecodeRuneInString(str)
  fmt.Printf("Рун: %c, Размер: %d\n", r, size)
}

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

go"Рун: а, Размер: 2"

Пример

Давайте проверим, как функция обрабатывает пустую строку:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  str := ""
  r, size := utf8.DecodeRuneInString(str)
  fmt.Printf("Рун: %d, Размер: %d\n", r, size)
}

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

go"Рун: 65533, Размер: 0"

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

  • функцию utf8.DecodeRune,
    которая декодирует первый рун из слайса байт
  • функцию utf8.DecodeLastRuneInString,
    которая декодирует последний рун в строке
  • функцию utf8.RuneCountInString,
    которая возвращает количество рун в строке
  • функцию utf8.ValidString,
    которая проверяет, является ли строка корректной UTF-8