Манипуляции со строками имеют фундаментальное значение в разработке программного обеспечения; в конце концов, большинство языков программирования предоставляют строковый тип. Строка представляет собой последовательность символов: букв, цифр и символов.
Манипуляции со строками удобны для различных приложений, от обработки текста и анализа данных до веб-разработки. Популярными операциями со строками являются объединение, проверка данных, извлечение и форматирование. Go предоставляет пакет для работы со строками под названием «strings» в стандартной библиотеке.
Пакет струн
струны Пакет предоставляет различные полезные функции для работы со строками и других операций. Пакет включает в себя функции для операций с подстроками, обрезки, сравнения строк, преобразования строк, построения строк, разделения и многого другого.
Вы можете импортировать пакет строк, указав имя пакета в списке импорта.
Импортировать"струны"
Поиск подстрок
струны пакет предоставляет три функции для поиска подстрок: Содержит функция, Содержитлюбой функция, и Содержитруну функция.
Содержит Функция проверяет, содержит ли указанная строка подстроку. Содержитлюбой функция проверяет, содержит ли строка какие-либо символы в подстроке, и Содержитруну Функция проверяет, содержит ли строка руну (символ Unicode).
Импортировать (
"ФМТ"
"струны"
)функцияосновной() {
строка := "Привет, мир!"
подстрока := "Мир"
персонажи := "эйоу"
руна := 'о'
ФМТ. Println (строки. Содержит (aString, подстрока)) // Вывод: правда
ФМТ. Println (строки. СодержитЛюбой (строка, символы)) // Вывод: правда
ФМТ. Println (строки. Содержитруну (aString, aRune)) // Вывод: правда
}
Вы можете получить индекс подстроки с помощью Индекс, ИндексЛюбой, индексбайт, и IndexFunc функции. Индекс Функция возвращает индекс подстроки, если она встречается в другой заданной строке. ИндексЛюбой функция возвращает индекс первого экземпляра кодовая точка Unicode или -1 если ни один из символов не присутствует.
Импортировать (
"ФМТ"
"струны"
)функцияосновной() {
строка := "Привет, мир!"
подстрока := "мир"
символы := "мир"
байтовый символ := байт('о')
руна := руна('о')ФМТ. Println (строки. Индекс (строка, подстрока)) // Выход: 7
ФМТ. Println (строки. IndexAny (строка, символы)) // Выход: 7
ФМТ. Println (строки. IndexByte (aString, byteCharacter)) // Выход: 4
ф := функция(р руна)логический {
возвращаться р == 'о'
}
ФМТ. Println (строки. IndexFunc (aString, f)) // Выход: 4
ФМТ. Println (строки. IndexRune (aString, aRune)) // Выход: 4
}
индексбайт возвращает индекс первого экземпляра байтового символа в строке или -1. IndexFunc Функция возвращает индекс в строке первой точки Unicode, которая удовлетворяет заданной функции. Наконец, ИндексРуна Функция возвращает индекс первого экземпляра кодовой точки Unicode руны.
Замена подстрок в Go
Заменять и Заменить все Функция помощи с заменой подстрок. Заменять функция принимает строку, исходную подстроку, замену и несколько замен. Заменить все функция принимает только строку, начальную подстроку и замену.
Импортировать (
"ФМТ"
"струны"
)
функцияосновной() {
строка := «Это тестовая строка, которую нужно изменить».
ФМТ. Println (строки. Заменить (строка, "является", "был", 1))
ФМТ. Println (строки. Заменить (строка, "является", "был", -1))
ФМТ. Println (строки. ЗаменитьВсе(Строка, "является", "был"))
}
Обратите внимание, что вы можете использовать как Replace, так и ReplaceAll для замены каждого вхождения в строке.
Разделение и объединение строк
струны пакет содержит Расколоть, Разделить после, РазделитьПослеN, и Разделить N функции для разделения строк, которые возвращают фрагмент строк.
Расколоть метод разбивается по указанному разделителю. Подобно Расколоть метод, Разделить после Метод разбивает строку, но включает разделитель в свои результаты.
Импортировать (
"ФМТ"
"струны"
)функцияосновной() {
с := «Это тестовая строка, которую нужно разделить».
ФМТ. Println (строки. Разделить (с, " "))
ФМТ. Println (строки. SplitAfter (с, " "))
ФМТ. Println (строки. РазделитьПослеN(s, " ", 3))
ФМТ. Println (строки. РазделитьN(s, " ", 3))
}
РазделитьПослеN метод похож на Разделить после за исключением того, что функция разбивает строку на указанное максимальное количество подстрок. Разделить N Метод разбивает строку до заданного максимального числа без включения разделителя в подстроки.
Вы можете соединять строки с помощью Присоединиться функцию от струны упаковка. Присоединиться функция принимает срез и разделитель.
Импортировать (
"ФМТ"
"струны"
)
функцияосновной() {
ФМТ. Println (строки. Присоединиться([]нить{"Привет", "Мир"}, ":"))
// Вывод: "Привет: Мир"
}
Работа со строковым регистром
Работа с регистром строк удобна для многих задач, в том числе работа с документацией. Вы можете использовать Понижать функция для нижнего регистра, Верхний функция для верхнего регистра и Название функция для регистра заголовка.
Импортировать (
"ФМТ"
"струны"
)функцияосновной() {
с := «Это тестовая строка».
ФМТ. Println (строки. ToLower(s)) // это тестовая строка.
ФМТ. Println (строки. Верхний (с)) // ЭТО ТЕСТОВАЯ СТРОКА.
ФМТ. Println (строки. Заголовок(и)) // ЭТО ТЕСТОВАЯ СТРОКА.
}
Построение строк в Go
Построители строк — это тип, который обеспечивает эффективную конкатенацию в Go. байт. Буфер type является одним из наиболее часто используемых конструкторов строк. байт. Буфер Метод реализует увеличивающийся буфер байтов с методами чтения и записи для операций, что позволяет эффективно добавлять строки без необходимости создания новых копий, в отличие от + операция и Присоединиться функция.
Импортировать (
"ФМТ"
"струны"
)функцияосновной() {
вар б струны. Строитель// Записываем несколько строк в билдер
б. ЗаписатьСтроку("Этот ")
б. ЗаписатьСтроку("является ")
б. ЗаписатьСтроку("а")
б. ЗаписатьСтроку("тест ")
б. ЗаписатьСтроку("нить.")// Получаем длину построителя
ФМТ. Печать (б. Лен())// Преобразование построителя в строку
ул := б. Нить()
ФМТ. Println (ул.)// Сбросить построитель
б. Перезагрузить()// Записываем еще несколько строк в билдер
б. ЗаписатьСтроку("Этот ")
б. ЗаписатьСтроку("является ")
б. ЗаписатьСтроку("другой ")
б. ЗаписатьСтроку("тест ")
б. ЗаписатьСтроку("нить.")// Получаем мощность строителя
ФМТ. Печать (б. Кепка())
// Снова конвертируем построитель в строку
ул = б. Нить()
ФМТ. Println (ул.)
}
основной показывает, как можно использовать струны. Строитель type для эффективного построения строк. WriteString метод Струны. Строитель тип расширяет последовательность строк друг к другу, а Лен Метод возвращает длину построенной строки.
Нить метод преобразует содержимое построителя в строку, а Перезагрузить метод сбрасывает построитель для построения дополнительной строки.
Кепка Метод возвращает мощность построителя. Это текущее пространство, выделенное Go для строки.
Обрезка строк в Go
струны Пакет также предоставляет функциональные возможности для обрезки строк в Подрезать, Обрезка слева, TrimPrefix, Обрезка справа, Тримспейс, и TrimSuffix функции.
Импортировать (
"струны"
"ФМТ"
)функцияосновной() {
// полная строка
с := "Привет, мир!"// элемент для обрезки
префикс := "Привет"
суффикс := "Мир!"// обрезает строку по указанному набору обрезки
ФМТ. Println (строки. Обрезка (с, "!"))// обрезает пробелами в начале и в конце строки
ФМТ. Println (строки. TrimSpace(s))// вырезает из левой строки указанный набор обрезки
ФМТ. Println (строки. Обрезать по левому краю (s, "Привет"))// обрезает правую строку по указанному набору обрезки
ФМТ. Println (строки. TrimRight (s, "Мир!"))// обрезает префикс
ФМТ. Println (строки. TrimPrefix (s, префикс))
// обрезает определенный суффикс
ФМТ. Println (строки. TrimSuffix (s, суффикс))
}
основной показывает, как можно использовать функции для обрезки. Различные функции обрезают с строки различными способами:
Вы можете форматировать строки в Go
Стандартная библиотека Go также предоставляет пакет fmt для форматирования строк. Пакет fmt использует глаголы форматирования в стиле C для эффективного форматирования строк в Go.