Найти в Дзене
Golang-news

Как заменить строку в Go — 5 лучших примеров

Go обладает мощной стандартной библиотекой, которая упрощает манипулирование строками прямо из коробки.
Одной из функций, которые я использую чаще всего, является функция Replace() пакета strings. strings.Replace() возвращает копию своей входной строки после поиска и замены всех экземпляров данной подстроки на новую. strings.Replace() signature Пример #1 – Замена разделителей Допустим, у вас есть несколько значений, разделенных запятыми, CSV. Возможно, вы хотите отделять каждое слово пробелом вместо запятой. Это может быть полезно, если вам нужно сделать ваши разделители согласованными, чтобы позже вы могли разделить строку на фрагменты. Пример #2 – Замените только некоторые строки Может быть полезно напечатать только замену первых n экземпляров слова. Например, предположим, что у нас есть какой-то текст, содержащий диалог, как в сценарии фильма. Если вы хотите изменить разделитель между строками "Lane" и "The" на тире вместо двоеточия, но не хотите заменять какие-либо двоеточия в диа
Оглавление

Go обладает мощной стандартной библиотекой, которая упрощает манипулирование строками прямо из коробки.

Одной из функций, которые я использую чаще всего, является функция Replace() пакета strings. strings.Replace() возвращает копию своей входной строки после поиска и замены всех экземпляров данной подстроки на новую.

strings.Replace() signature

  • s - это исходная строка, содержащая части, которые необходимо изменить.
  • old - это подстрока, которую вы хотите заменить.
  • new - это подстрока, на которую будет заменена подстрока old.
  • n ограничивает количество замен. Если вы хотите заменить их все, просто установите n равным -1 или используйте более явную функцию replaceAll.

Пример #1 – Замена разделителей

Допустим, у вас есть несколько значений, разделенных запятыми, CSV. Возможно, вы хотите отделять каждое слово пробелом вместо запятой. Это может быть полезно, если вам нужно сделать ваши разделители согласованными, чтобы позже вы могли разделить строку на фрагменты.

-2

Пример #2 – Замените только некоторые строки

Может быть полезно напечатать только замену первых n экземпляров слова. Например, предположим, что у нас есть какой-то текст, содержащий диалог, как в сценарии фильма. Если вы хотите изменить разделитель между строками "Lane" и "The" на тире вместо двоеточия, но не хотите заменять какие-либо двоеточия в диалоге, вы можете установить n=1.

-3

Пример #3 – Удалите все экземпляры строки

Иногда вам просто хочется убрать определенные символы. Например, вы можете захотеть удалить все точки. Вы можете просто заменить все точки пустой строкой.

-4

Пример #4 – Замена в нескольких строках (высокая производительность)

Если у вас есть одни и те же замены и вам нужно выполнить эти операции со многими разными документами, может иметь смысл инициализировать средство замены, которое будет намного быстрее при многократном использовании. Причина, по которой это быстрее, заключается в том, что под капотом создается структура trie, которую он сохраняет в памяти, и эту структуру можно использовать повторно.

-5

NewReplacer() принимает список пар строк old-new, поэтому вы можете использовать его для выполнения множества различных операций замены.

-6

Пример #5 – Сложные замены регулярными выражениями

Сейчас мы полностью меняем пакеты и будем использовать пакет регулярных выражений стандартной библиотеки. Этот пакет предоставляет функцию ReplaceAllString(), которая позволяет нам выполнять более сложные замены с использованием стандартного регулярного выражения. Это может быть полезно, если вам нужно выполнить некоторые динамические замены или вы действительно свободно владеете регулярными выражениями.

-7

Спасибо за чтение!