package
0.0.0-20241220153043-cbee1828b161
Repository: https://github.com/alivewel/go.git
Documentation: pkg.go.dev
# README
Как посчитать количество символов в строке?
func main() {
str := "Привет!"
charCount := 0
// посчитать кол-во символов в строке
if charCount == 7 {
println("Success!")
}
}
Подсчет символов №1
Самый простой способ подсчитать количество символов в строке — это пройтись по ней в цикле и инкрементировать счетчик с каждой итерацией. Это позволяет корректно учитывать символы, которые занимают более одного байта.
Решение №1
func main() {
str := "Привет!"
charCount := 0
// Посчитать количество символов в строке
for range str {
charCount++
}
if charCount == 7 {
println("Success!")
}
}
Подсчет символов №2
Преобразовав строку в срез рун с помощью []rune(str), мы можем работать с каждым символом как с отдельной Unicode-кодовой точкой, и функция len() затем возвращает количество рун, что соответствует количеству символов в строке.
Решение №2
func main() {
str := "Привет!"
charCount := 0
// Посчитать количество символов в строке
charCount = len([]rune(str)) // Преобразуем строку в срез рун и берем его длину
if charCount == 7 {
println("Success!")
}
}
Почему нельзя использовать len(str)
?
Если использовать len(str)
, то вы получите количество байт в строке, а не количество символов. В данном случае строка "Привет!"
содержит русские символы, которые занимают 2 байта каждый. Поэтому len(str)
вернет 13, а не 7.
Что такое руна? Какой размер она имеет?
- Руна (rune) — это тип данных в Go, представляющий собой Unicode-кодовую точку. По сути, руна — это просто
int32
, который используется для обозначения символов Unicode. - Размер руны: Руна в Go имеет размер 4 байта (32 бита). Это позволяет ей хранить любую Unicode-кодовую точку, так как диапазон Unicode охватывает значения от 0 до 0x10FFFF, что помещается в 32-битное целое число.