Вступление
В пакете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
позволяют проверить, начинается ли строка или заканчивается определенным набором символов.
Например, чтобы проверить, начинается ли строка"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.