Введение в пакет Strings в Go

Вступление

В пакетеstring Go есть несколько функций, доступных для работы сstring data type. Эти функции позволяют нам легко модифицировать и манипулировать строками. Мы можем думать о функциях как о действиях, которые мы выполняем над элементами нашего кода. Встроенные функции - это те, которые определены в языке программирования Go и легко доступны для использования.

В этом уроке мы рассмотрим несколько различных функций, которые мы можем использовать для работы со строками в Go.

Создание строк в верхнем и нижнем регистре

Функцииstrings.ToUpper иstrings.ToLower возвращают строку, в которой все буквы исходной строки преобразованы в буквы верхнего или нижнего регистра. Поскольку строки являются неизменяемыми типами данных, возвращаемая строка будет новой строкой. Любые символы в строке, которые не являются буквами, не будут изменены.

Чтобы преобразовать строку"Sammy Shark" в верхний регистр, вы должны использовать функциюstrings.ToUpper:

ss := "Sammy Shark"
fmt.Println(strings.ToUpper(ss))
OutputSAMMY SHARK

Чтобы преобразовать в нижний регистр:

fmt.Println(strings.ToLower(ss))
Outputsammy shark

Поскольку вы используете пакетstrings, вам сначала нужно импортировать его в программу. Чтобы преобразовать строку в верхний и нижний регистр, вся программа будет выглядеть следующим образом:

package main

import (
    "fmt"
    "strings"
)

func main() {
    ss := "Sammy Shark"
    fmt.Println(strings.ToUpper(ss))
    fmt.Println(strings.ToLower(ss))
}

Функцииstrings.ToUpper иstrings.ToLower упрощают оценку и сравнение строк, делая регистр последовательным во всем. Например, если пользователь записывает свое имя в нижнем регистре, мы все равно можем определить, есть ли его имя в нашей базе данных, сверяя его с версией в верхнем регистре.

Функции поиска строки

Пакетstrings имеет ряд функций, которые помогают определить, содержит ли строка определенную последовательность символов.

функция Use

strings.HasPrefix

Ищет строку с начала

strings.HasSuffix

Ищет строку с конца

strings.Contains

Ищет где угодно в строке

strings.Count

Считает, сколько раз появляется строка

strings.HasPrefix иstrings.HasSuffix позволяют проверить, начинается ли строка или заканчивается определенным набором символов.

Например, чтобы проверить, начинается ли строка"Sammy Shark" сSammy и заканчивается наShark:

ss := "Sammy Shark"
fmt.Println(strings.HasPrefix(ss, "Sammy"))
fmt.Println(strings.HasSuffix(ss, "Shark"))
Outputtrue
true

Вы должны использовать функциюstrings.Contains, чтобы проверить, содержит ли"Sammy Shark" последовательностьSh:

fmt.Println(strings.Contains(ss, "Sh"))
Outputtrue

Наконец, чтобы увидеть, сколько раз букваS встречается во фразеSammy Shark:

fmt.Println(strings.Count(ss, "S"))
Output2

[.note] #Note: Все строки в Go чувствительны к регистру. Это означает, чтоSammy не то же самое, чтоsammy.
#

Использованиеs в нижнем регистре для получения отсчета отSammy Shark не то же самое, что использованиеS в верхнем регистре:

fmt.Println(strings.Count(ss, "s"))
Output0

ПосколькуS отличается отs, возвращаемое количество будет0.

Строковые функции полезны, когда вы хотите сравнить или найти строки в вашей программе.

Определение длины строки

Встроенная функцияlen() возвращает количество символов в строке. Эта функция полезна в тех случаях, когда вам необходимо ввести минимальную или максимальную длину пароля или обрезать строки большего размера, чтобы они находились в определенных пределах для использования в качестве сокращений.

Чтобы продемонстрировать эту функцию, мы найдем длину строки длиной в предложение:

import (
    "fmt"
    "strings"
)

func main() {
        openSource := "Sammy contributes to open source."
        fmt.Println(len(openSource))
}
Output33

Мы устанавливаем переменнуюopenSource равной строке"Sammy 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"}, ","))
Outputsharks,crustaceans,plankton

Если мы хотим добавить запятую и пробел между строковыми значениями в нашей новой строке, мы можем просто переписать наше выражение с пробелом после запятой:strings.Join([]string{"sharks", "crustaceans", "plankton"}, ", ").

Так же, как мы можем объединять строки, мы также можем разбивать строки. Для этого мы можем использовать функциюstrings.Split и разбить ее на пробелы:

balloon := "Sammy has a balloon."
s := strings.Split(balloon, " ")
fmt.Println(s)
Output[Sammy has a balloon]

На выходе получается фрагмент строки. Поскольку использовалсяstrings.Println, сложно сказать, что это за результат, глядя на него. Чтобы убедиться, что это действительно кусок строки, используйте функциюfmt.Printf с глаголом%q, чтобы заключить строки в кавычки:

fmt.Printf("%q", s)
Output["Sammy" "has" "a" "balloon."]

Еще одна полезная функция в дополнение кstrings.Split -strings.Fields. Разница в том, чтоstrings.Fields будет игнорировать все пробелы и будет разделять только фактическиеfields в строке:

data := "  username password     email  date"
fields := strings.Fields(data)
fmt.Printf("%q", fields)
Output["username" "password" "email" "date"]

Функцияstrings.ReplaceAll может принимать исходную строку и возвращать обновленную строку с некоторой заменой.

Давайте скажем, что воздушный шар, который был у Сэмми, потерян. Поскольку у Сэмми больше нет этого балуна, мы изменим подстроку"has" с исходной строкиballoon на"had" в новой строке:

fmt.Println(strings.ReplaceAll(balloon, "has", "had"))

В скобках сначала идетballoon - переменная, в которой хранится исходная строка; вторая подстрока"has" - это то, что мы хотели бы заменить, а третья подстрока"had" - это то, на что мы бы заменили эту вторую подстроку. Наш вывод будет выглядеть так, когда мы включим это в программу:

OutputSammy had a balloon.

Использование строковой функцииstrings.Join,strings.Split иstrings.ReplaceAll предоставит вам больший контроль для управления строками в Go.

Заключение

В этом руководстве были рассмотрены некоторые из общих функций пакета строк для типа данных строки, которые можно использовать для работы со строками в программах Go и манипулирования ими.

Вы можете узнать больше о других типах данных вUnderstanding Data Types и узнать больше о строках вAn Introduction to Working with Strings.