Функции пакета strings
Разделяйте, объединяйте и обрезайте строки
«Функции пакета strings» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Пакет strings
Пакет стандартной библиотеки strings предоставляет готовые вспомогательные средства для работы с текстом: поиск, разделение, объединение, обрезку и изменение регистра.
Импортируйте его с помощью import "strings".
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ToUpper("hello"))
}Contains и HasPrefix
Проверяйте наличие подстрок без написания циклов:
strings.Contains(s, sub)сообщает, встречается лиsub.strings.HasPrefixиstrings.HasSuffixпроверяют начало и конец строки.
package main
import (
"fmt"
"strings"
)
func main() {
s := "golang"
fmt.Println(strings.Contains(s, "lan"))
fmt.Println(strings.HasPrefix(s, "go"))
}Поиск позиции
strings.Index(s, sub) возвращает байтовый индекс первого совпадения или -1, если совпадение не найдено.
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Index("chocolate", "col"))
fmt.Println(strings.Index("chocolate", "xyz"))
}Разделение строки
strings.Split(s, sep) разбивает строку на срез, используя разделитель.
Эта функция отлично подходит для разбора данных в формате CSV.
package main
import (
"fmt"
"strings"
)
func main() {
parts := strings.Split("a,b,c", ",")
fmt.Println(parts)
fmt.Println(len(parts))
}Разделение по пробельным символам
strings.Fields(s) разделяет строку по любой последовательности пробельных символов и удаляет пустые части. Это идеальный вариант для подсчёта слов.
package main
import (
"fmt"
"strings"
)
func main() {
words := strings.Fields(" the quick brown fox ")
fmt.Println(words)
fmt.Println(len(words))
}Объединение срезов
strings.Join(slice, sep) — обратная операция к Split: она соединяет элементы среза с помощью разделителя.
package main
import (
"fmt"
"strings"
)
func main() {
parts := []string{"2026", "05", "30"}
fmt.Println(strings.Join(parts, "-"))
}Удаление пробелов
strings.TrimSpace(s) удаляет пробельные символы в начале и конце строки, что особенно удобно для очистки пользовательского ввода.
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.TrimSpace(" hi there ") + "!")
}Удаление определённых символов
strings.Trim(s, cutset) удаляет любые из указанных символов с обоих концов строки. TrimPrefix и TrimSuffix удаляют точные строки.
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Trim("***name***", "*"))
fmt.Println(strings.TrimSuffix("file.txt", ".txt"))
}Замена текста
strings.ReplaceAll(s, old, new) заменяет каждое вхождение. Используйте strings.Replace(s, old, new, n), чтобы ограничить замену первыми n совпадениями.
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ReplaceAll("a-b-c", "-", "+"))
fmt.Println(strings.Replace("a-b-c", "-", "+", 1))
}Повторение и подсчёт
Ещё две полезные функции:
strings.Repeat(s, n)создаёт строку из повторяющихся фрагментов.strings.Count(s, sub)подсчитывает неперекрывающиеся вхождения.
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Repeat("ab", 3))
fmt.Println(strings.Count("banana", "a"))
}Комбинирование функций
Эти вспомогательные функции хорошо сочетаются. Здесь мы обрезаем, разделяем и снова объединяем неаккуратную строку в чистый список, разделённый запятыми.
package main
import (
"fmt"
"strings"
)
func main() {
raw := " go rust zig "
words := strings.Fields(raw)
fmt.Println(strings.Join(words, ", "))
}Быстрая проверка
Выберите функцию, которая объединяет срез в одну строку.
Повторение: функции strings
Теперь у Вас есть набор инструментов для работы с текстом:
- Поиск:
Contains,Index,HasPrefix. - Разделение:
Split,Fields. - Объединение:
Join,Repeat. - Очистка:
TrimSpace,Trim,ReplaceAll.
package main
import (
"fmt"
"strings"
)
func main() {
s := " Hello, Go World "
fmt.Println(strings.ToLower(strings.TrimSpace(s)))
}Часто задаваемые вопросы
Урок «Функции пакета strings» бесплатный?
Да — полный текст урока «Функции пакета strings» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Функции пакета strings»?
Разделяйте, объединяйте и обрезайте строки Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Функции пакета strings»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Руны и байты
- Функции пакета strings
- strings.Builder
- Unicode и utf8