Во время создания программы зачастую требуется заменить определенную подстроку внутри строки. В стандартной библиотеке Go есть функция Replace
и тип Replacer
для замены сразу нескольких строк.
Как заменить части строки в Golang?
1. Создайте файл replace.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import ( "fmt" "strings" ) const refString = "Mary had a little lamb" const refStringTwo = "lamb lamb lamb lamb" func main() { out := strings.Replace(refString, "lamb", "wolf", -1) fmt.Println(out) out = strings.Replace(refStringTwo, "lamb", "wolf", 2) fmt.Println(out) } |
2. Запустите код через go run replace.go
;
3. Посмотрите на вывод в терминале:
4. Создайте файл replacer.go
со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "strings" ) const refString = "Mary had a little lamb" func main() { replacer := strings.NewReplacer("lamb", "wolf", "Mary", "Jack") out := replacer.Replace(refString) fmt.Println(out) } |
5. Запустите код через go run replacer.go
;
6. Посмотрите на результат в терминале:
Замена текста в строке используя регулярные выражения
7. Создайте файл regexp.go
со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "regexp" ) const refString = "Mary had a little lamb" func main() { regex := regexp.MustCompile("l[a-z]+") out := regex.ReplaceAllString(refString, "replacement") fmt.Println(out) } |
8. Запустите код через go run regexp.go
;
9. Посмотрите на результат в терминале:
Функция Replace() — Подробное описание
Функция Replace
из пакета strings
часто используется для простой замены. Последний целочисленный аргумент определяет, сколько будет выполнено замен. В случае с -1
заменяются все строки. Во втором случае использования Replace
производится только две замены. Использование функции Replace
описано в шагах 1-3.
Помимо функции Replace
, в структуре Replacer
также есть метод WriteString
. Данный метод запишет все замены, определенные в Replacer
. Главное предназначение данного типа в возможности его повторного использования. Он может сразу заменить несколько строк, что безопасно для конкурентного использования. Это показано в шагах 4-6.
Более сложным методом замены подстроки или даже совпадающего паттерна является использование регулярного выражения. Тип указателя Regex
метода ReplaceAllString
может использоваться для этих целей. На этапах 7-9 показано использование пакета regexp
.
Когда требуется более сложная логика замены, лучше всего использовать пакет regexp
и регулярные выражения.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»