Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Манипуляции со строками имеют фундаментальное значение в разработке программного обеспечения; в конце концов, большинство языков программирования предоставляют строковый тип. Строка представляет собой последовательность символов: букв, цифр и символов.

Манипуляции со строками удобны для различных приложений, от обработки текста и анализа данных до веб-разработки. Популярными операциями со строками являются объединение, проверка данных, извлечение и форматирование. 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.