@VadimRublev
Go, front-end (ванильный).

Как замеряют длину len() и RuneCountInString()?

var question = "¿Cómo estás?" // 12 символов в значении.
fmt.Println(len(question), "bytes") // 15 bytes
fmt.Println(utf8.RuneCountInString(question), "runes") // 12 runes
Функция len() считает байты. Длина по ней будет равна количеству символов только если эти символы - латиница в кодировке ASCII.
Функция utf8.RuneCountInString() считает руны - 1 rune = 1 символ. Символы любые, которые есть в UTF-8.
Я правильно понял?

Т. е. я недопонимаю почему в рунах длина равна количеству символов...
  • Вопрос задан
  • 650 просмотров
Пригласить эксперта
Ответы на вопрос 2
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
dimonchik2013
@dimonchik2013
non progredi est regredi
в чем вопрос-то?

если работаешь со строками - работаешь с кодировками

если такой умный, что всегда знаешь сколько какой символ занимает байт - работай с байтами и len

не все такие. Для не всех ввели rune, отдающее число символов строки вне зависимости от кодировки

RuneCountInString(asciiString)
RuneCountInString(utf8String)


вернут одинаково

в чем вопрос?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы