Основы работы с пакетом strings в Go
Без категорий | Комментировать запись
Пакет strings в Go имеет несколько функций для работы со строковым типом данных. Эти функции позволяют легко модифицировать и управлять строками. Функции здесь можно рассматривать как действия, которые мы выполняем над элементами нашего кода. Встроенные функции – это те, которые определены в языке программирования Go и доступны для использования.
В этом мануале мы рассмотрим несколько различных функций, которые можно использовать для работы со строками в Go.
Изменение регистра строк
Функции strings.ToUpper и strings.ToLower возвращают строки, преобразовывая все их буквы в прописные или строчные. Поскольку строки являются неизменяемым типом данных, возвращаемая строка будет новой строкой. Любые символы в строке, которые не являются буквами, не будут изменены.
Чтобы преобразовать строку «Perfect Blog» в верхний регистр, нужно использовать функцию strings.ToUpper:
ss := "Perfect Blog"
fmt.Println(strings.ToUpper(ss))
PERFECT BLOG
Чтобы преобразовать эту строку в нижний регистр, нужно использовать:
fmt.Println(strings.ToLower(ss))
perfect blog
Поскольку вы используете пакет strings, вам сначала нужно импортировать его в программу. вся программа для преобразования строки в верхний и нижний регистр будет выглядеть следующим образом:
package main
import (
"fmt"
"strings"
)
func main() {
ss := "Perfect Blog"
fmt.Println(strings.ToUpper(ss))
fmt.Println(strings.ToLower(ss))
}
Функции strings.ToUpper и strings.ToLower упрощают оценку и сравнение строк, обеспечивая согласованность регистра. Например, если пользователь ввел свое имя в нижнем регистре, вы все равно сможете определить, находится ли его имя в базе данных.
Функции поиска
Пакет strings имеет ряд функций, которые помогают определить, содержит ли строка определенную последовательность символов.
Функция | Действие |
strings.HasPrefix | Ищет строку с начала |
strings.HasSuffix | Ищет строку с конца |
strings.Contains | Поиск в любом месте строки |
strings.Count | Подсчитывает, сколько раз встречается эта строка |
Strings.HasPrefix и strings.HasSuffix позволяют проверить, начинается/заканчивается ли строка определенным набором символов.
Например, чтобы проверить, начинается ли строка “Perfect Blog” с Perfect и заканчивается на Blog, нужно использовать:
ss := "Perfect Blog"
fmt.Println(strings.HasPrefix(ss, "Perfect"))
fmt.Println(strings.HasSuffix(ss, "Blog"))
true
true
Можно было бы использовать функцию strings.Contains, чтобы проверить, содержит ли «Perfect Blog» последовательность Bl:
fmt.Println(strings.Contains(ss, "Bl"))
true
Наконец, так можно увидеть, сколько раз буква е появляется во фразе Perfect Blog:
fmt.Println(strings.Count(ss, "е"))
2
Примечание. Все строки в Go чувствительны к регистру. Это означает, что Perfect и perfect – не одно и то же.
Теперь попробуйте узнать, сколько раз во фразе Perfect Blog встречается прописная Е:
fmt.Println(strings.Count(ss, "Е"))
0
Поскольку символы Е и е – не одно и тоже, вы получите 0.
Строковые функции позволяют найти или сравнить строки в вашей программе.
Определение длины строки
Встроенная функция len() возвращает количество символов в строке. Эта функция полезна в тех случаях, когда вам нужно задать минимальную или максимальную длину пароля или обрезать строки большего размера, чтобы они находились в определенных пределах (для сокращений, например).
Чтобы продемонстрировать эту функцию, давайте попробуем узнать длину такого предложения:
import (
"fmt"
"strings"
)
func main() {
openSource := "8host contributes to open source."
fmt.Println(len(openSource))
}
33
Переменная openSource равна строке “8host contributes to open source.”, она передается в функцию len() с помощью len(openSource). Наконец, мы передаем функцию в fmt.Println(), чтобы увидеть вывод программы на экране.
Имейте в виду, что функция len() будет подсчитывать все символы внутри двойных кавычек, включая буквы, цифры, пробелы и другие символы.
Функции управления строками
Функции strings.Join, strings.Split и strings.ReplaceAll – это несколько дополнительных вариантов для управления строками в Go.
Функция strings.Join полезна для объединения срезов строк в новую единственную строку.
Чтобы создать разделенную запятыми строку из срезов, можно было бы использовать эту функцию таким образом:
fmt.Println(strings.Join([]string{"sharks", "crustaceans", "plankton"}, ","))
sharks,crustaceans,plankton
Если мы хотим добавить запятую и пробел между строковыми значениями в полученной новой строке, мы можем просто переписать наше выражение с пробелом после запятой:
strings.Join([]string{"sharks", "crustaceans", "plankton"}, ", ")
Аналогично можно и разбивать строки. Для этого можно использовать функцию strings.Split и разделить строку по пробелам:
balloon := "Johnny has a balloon."
s := strings.Split(balloon, " ")
fmt.Println(s)
[Johnny has a balloon]
На выходе получается срез. Так как мы использовали strings.Println, трудно понять, что именно получилось в выводе, просто посмотрев на него. Чтобы увидеть, что это действительно срез, используйте функцию fmt.Printf с оператором %q, чтобы заключить новые строки в кавычки:
fmt.Printf("%q", s)
["Johnny" "has" "a" "balloon."]
Еще одна полезная функция в дополнение к strings.Split – это strings.Fields. Разница в том, что strings.Fields игнорирует все пробелы и выделяет только действительные поля в строке:
data := " username password email date"
fields := strings.Fields(data)
fmt.Printf("%q", fields)
["username" "password" "email" "date"]
Функция strings.ReplaceAll может взять исходную строку и вернуть обновленную строку с заменой.
Предположим, что Джонни потерял свой воздушный шар. Поскольку у него больше нет шара, мы можем заменить подстроку «has» из исходной строки на «had» в новой строке:
fmt.Println(strings.ReplaceAll(balloon, "has", "had"))
В скобках находится переменная balloon, которая хранит исходную строку; вторая подстрока “has” – это то, что мы хотели бы заменить, а третья подстрока “had” – это то, чем нужно заменить вторую подстроку. Вывод будет выглядеть так:
Johnny had a balloon.
Использование строковых функций strings.Join, strings.Split и strings.ReplaceAll предоставит вам больше возможностей для управления строками в Go.
Заключение
В этом мануале вы узнали о некоторых общих функциях пакета string, которые вы можете использовать для работы со строками в ваших программах Go.
Читайте также:
Tags: Go, Golang