На этом шаге рассмотрим функции пакета strings для работы со строками в Go.
В таблице 1 рассмотрим функции пакета strings. Будем использовать следующие переменные: s и t - тип string, xs – тип []string, i – тип int, и f – ссылка на функцию с сигнатурой func(rune) bool. Индексы соответствуют первым байтам в кодировке UTF-8 для кодовых пунктов Юникода (символов) или строк, или имеют значение -1 в случае отсутствия соответствия. Переменная r имеет тип unicode.SpecialCase и используются для определения дополнительных правил Юникода.
| Функция | Описание/результат | 
|---|---|
| strings.Contains(s, t) | true, если подстрока t входит в строку s | 
| strings.Count(s, t) | Количество (неперекрывающихся) вхождений подстроки t в строку s | 
| strings.EqualFold(s, t) | true, если строки равны, без учета регистра символов | 
| strings.Fields(s) | Срез []string, содержащий результаты разбиения строки s по пробельным символам | 
| strings.FieldsFunc(s,f) | Срез []string, содержащий результаты разбиения строки s по позициям, для которых функция f вернет true | 
| strings.HasPrefix(s, t) | true, если строка s начинается со строки t | 
| strings.HasSuffix(s, t) | true, если строка s заканчивается строкой t | 
| strings.Index(s, t) | Индекс первого вхождения подстроки t в строке s | 
| strings.IndexAny(s, t) | Индекс первого вхождения любого символа из строки t в строке s | 
| strings.IndexFunc(s, f) | Индекс первого вхождения символа в строке s, для которого функция f вернет true | 
| strings.IndexRune(s, char) | Индекс первого вхождения символа char, представленного значением типа rune, в строке s | 
| strings.Join(xs, t) | Строка, являющаяся результатом конкатенации всех строк в xs, разделенных строкой t (которая может быть пустой строкой) | 
| strings.LastIndex(s, t) | Индекс последнего вхождения подстроки t в строке s | 
| strings.LastIndexAny(s, t) | Индекс последнего вхождения любого символа из строки t в строке s | 
| strings. LastIndexFunc(s, f) | Индекс последнего вхождения символа в строке s, для которого функция f вернет true | 
| strings.Map(mf, t) | Копия строки t, в которой каждый символ замещается или удаляется в соответствии с функцией отображения mf, имеющей сигнатуру func(rune) rune | 
| strings.NewReader(s) | Указатель на значение с методами Read(), ReadByte() и ReadRune() для выполнения операций со строкой s | 
| strings.NewReplacer(...) | Указатель на значение с методами для замены каждой указанной пары строк старая/новая | 
| strings.Repeat(s, i) | Строка, в которой строка s повторяется i раз | 
| strings.Replace(s, old, new, i) | Копия строки s, где все неперекрывающиеся вхождения строки old замещены строкой new, если в аргументе i передано значение –1. В противном случае выполняется не более i замен | 
| strings.Split(s, t) | Срез []string, являющийся результатом разбиения строки s по вхождениям строки t | 
| strings.SplitAfter(s, t) | Действует подобно функции strings.Split(), но сохраняет строку-разделитель в полученных строках | 
| strings.SplitAfterN(s, t, i) | Действует подобно функции strings.SplitN(), но сохраняет строку-разделитель в полученных строках | 
| strings.SplitN(s, t, i) | Срез []string, являющийся результатом разбиения строки s по вхождениям строки t, но не более i-1 раз | 
| strings.Title(s) | Копия строки s, где первые буквы в каждом слове преобразованы в верхний регистр | 
| strings.ToLower(s) | Копия строки s, где все символы преобразованы в нижний регистр | 
| strings.ToLowerSpecial(r, s) | Копия строки s, где все символы преобразованы в нижний регистр, при этом предпочтение отдается правилам в r | 
| strings.ToTitle(s) | Копия строки s, где первые символы слов преобразованы в верхний регистр | 
| strings. ToTitleSpecial(r, s) | Копия строки s, где первые символы слов преобразованы в верхний регистр, при этом предпочтение отдается правилам в r | 
| strings.ToUpper(s) | Копия строки s, где все символы преобразованы в верхний регистр | 
| strings.ToUpperSpecial(r, s) | Копия строки s, где все символы преобразованы в верхний регистр, при этом предпочтение отдается правилам в r | 
| strings.Trim(s, t) | Копия строки s, где с обоих концов удалены символы, входящие в строку t | 
| strings.TrimFunc(s, f) | Копия строки s, где с обоих концов удалены символы, для которых функция f вернула true | 
| strings.TrimLeft(s, t) | Копия строки s, в начале которой удалены символы, входящие в строку t | 
| strings.TrimLeftFunc(s, f) | Копия строки s, где в начале удалены символы, для которых функция f вернула true | 
| strings.TrimRight(s, t) | Копия строки s, где в конце удалены символы, входящие в строку t | 
| strings.TrimRightFunc(s, f) | Копия строки s, где в конце удалены символы, для которых функция f вернула true | 
| strings.TrimSpace(s) | Копия строки s, где с обоих концов удалены пробельные символы | 
На следующем шаге рассмотрим некоторые примеры, иллюстрирующие использование функций пакета strings.