| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package main
- import (
- "fmt"
- "unicode"
- "unicode/utf8"
- )
- func main() {
- // ExampleBytesSlice()
- // ExampleRune()
- ExampleUnicode()
- }
- func ExampleBytesSlice() {
- // Используем строку, которую конвертируем в []byte,
- // чтобы показать, как выглядит байтовый срез.
- bs := []byte("Это байтовый срез")
- // Печатаем байтовый срез.
- fmt.Printf("Так байтовый срез выглядит внутри: %v\n", bs)
- // Демонстрируем, что быйтовый срез можно изменять,
- // а затем выводи его в виде строки.
- for i := range bs {
- // Для четных байтов увеличиваем на 1, для нечетных уменьшаем на 1
- if bs[i]%2 == 0 {
- bs[i] = bs[i] + 1
- } else {
- bs[i] = bs[i] - 1
- }
- }
- // Печатаем измененный байтовый срез в виде строки.
- fmt.Printf("Измененный байтовый сред в виде строки: %s", bs)
- }
- func ExampleRune() {
- // Преобразуем строку в срез рун
- rs := []rune("Это срез рун")
- // Итерируемся по срезу рун и заменяем символ 'р' на '*'
- for i := range rs {
- // fmt.Println(rs[i])
- if rs[i] == 'р' {
- rs[i] = '*'
- }
- }
- // Выводит измененный срез в виде строки
- fmt.Printf("Измененный срез в виде строки: %s\n", string(rs))
- }
- func ExampleUnicode() {
- // функции ниже принимают на вход тип rune
- // проверка символа на цифру
- fmt.Println(unicode.IsDigit('1')) // true
- // проверка символа на букву
- fmt.Println(unicode.IsLetter('a')) // true
- // проверка символа на нижний регистр
- fmt.Println(unicode.IsLower('A')) // false
- // проверка символа на верхний регистр
- fmt.Println(unicode.IsUpper('A')) // true
- // проверка символа на пробел
- // пробел это не только ' ', но и:
- // '\t', '\n', '\v', '\f', '\r' - подробнее читайте в документации
- fmt.Println(unicode.IsSpace('\t')) // true
- // С помощью функции Is можно проверять на кастомный RangeTable:
- // например, проверка на латиницу:
- fmt.Println(unicode.Is(unicode.Latin, 'ы')) // false
- // функции преобразований
- fmt.Println(string(unicode.ToLower('F'))) // f
- fmt.Println(string(unicode.ToUpper('f'))) // F
- var en = "english"
- var ru = "русский"
- fmt.Println(len(en), len(ru))
- fmt.Println(utf8.RuneCountInString(en), utf8.RuneCountInString(ru))
- }
|