Пакет Strings: определение длины строки и манипуляции со строками
Встроенная функция len() возвращает количество символов в строке. Эта функция полезна, когда нужно установить минимальную или максимальную длину пароля или задать определенный лимит для больших строк для использования сокращений.
Для демонстрации работы этой функции мы определим длину строки, которая содержит целое предложение.
Мы задали переменную OpenSource, которая соответствует строке "Sammy contributes to open source.", а затем передали эту переменную в функцию len() с помощью конструкции len(openSource). В конечном итоге мы передали вывод нашей функции в функцию fmt.Println(), чтобы увидеть результат выполнения программы на экране.
Необходимо учитывать, что функция len() будет считать любые символы, которые содержатся внутри двойных кавычек, включая буквы, числа, символы пробела и специальные символы.
Функции для манипуляций со строками
Функции strings.Join, strings.Split и strings.ReplaceAll предоставляют ряд дополнительных методов манипуляций со строками в Go.
Функция strings.Join полезна для объединения набора строк в новую единую строку.
Для создания разделенной запятой строки из набора строк мы будем использовать эту функцию следующим образом.
Если мы хотим добавлять запятую и пробел между значениями строк в нашей новой строке, мы можем просто перезаписать наше выражение с пробелом после запятой: strings.Join([]string{"sharks", "crustaceans", "plankton"}, ", ").
Join объединяет элементы своего первого аргумента для создания одной строки. Строка-разделитель sep помещается между элементами результирующей строки.
Мы можем как объединять строки, так и разбивать их на несколько отдельных строк. Для этого используем функцию strings.Split и выполняем разделение строки по пробелам.
В результате мы получим набор строк. Поскольку мы использовали strings.Println, очень трудно сказать, какой мы получили результат, посмотрев на вывод. Чтобы убедиться, что мы получили набор строк, используем функцию fmt.Printf с оператором %q для вывода строк.
Функция Split разбивает фрагменты s на все подстроки, разделенные sep, и возвращает фрагмент подстрок между этими разделителями.
Если s не содержит sep и sep не пуст, функция Split возвращает фрагмент длины 1, единственным элементом которого является s.
Если sep пуст, Split разбивается после каждой последовательности UTF-8. Если и s, и sep пусты, функция Split возвращает пустой фрагмент.
Это эквивалентно SplitN со значением -1.
Чтобы разделить первый экземпляр разделителя, используй Cut.
Еще одной полезной функцией, помимо strings.Split, является функция strings.Fields.
Fields разбивает строку s вокруг каждого экземпляра одного или нескольких последовательных пробельных символов, как определено в unicode.IsSpace, возвращая фрагмент подстрок s или пустой фрагмент, если s содержит только пробелы.
Разница между strings.Split и strings.Fields состоит в том, что strings.Fields будет игнорировать все пробелы и разделять строку по реальным полям в строке.
Функция strings.ReplaceAll получает оригинальную строку и возвращает обновленную строку с определенными изменениями.
ReplaceAll возвращает копию строки s со всеми непересекающимися экземплярами старого, замененными новыми. Если old пусто, оно совпадает в начале строки и после каждой последовательности UTF-8, что дает до k+1 замен для строки из k-рун.
Давай представим, что Sammy потерял свой шарик. Поскольку у Sammy больше нет шарика, мы изменим подстроку "has" (есть) оригинальной строки ballon на "had" (был) в новой строке.
В скобках первым параметром указан balloon, переменная, которая хранит оригинальную строку; далее идет подстрока "has", которую мы хотим заменить, а третьим параметром идет "had" — подстрока, которую мы хотим вставить в оригинальную строку. Наш вывод будет выглядеть следующим образом, когда мы добавим этот код в программу.
Использование функций strings.Join, strings.Split и strings.ReplaceAll позволяет получить дополнительные возможности для манипуляций со строками в Go.
Однако это далеко не все функции, которые могут пригодиться тебе в работе. Далее мы рассмотрим другие функции, позволяющие манипулировать со строками.