Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpRgRF 135 of 280 menu
◀ ▶

Замена первого совпадения в Go

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

Второй прием: передать функцию замены, которая меняет текст только один раз, а дальше возвращает исходный фрагмент:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`\d`) txt := "1 2 3 4 5" loc := re.FindStringIndex(txt) if loc != nil { res := txt[:loc[0]] + "!" + txt[loc[1]:] fmt.Println(res) } done := false res2 := re.ReplaceAllStringFunc(txt, func(s string) string { if done { return s } done = true return "!" }) fmt.Println(res2) }

Дана строка:

txt := "cat cat dog"

Замените только первое "cat" на "pet".

Дана строка:

txt := "a1a2a3"

Замените первую цифру на "X" через индексы.

Дана строка:

txt := "z z z"

Скажите, сколько раз вызовется функция при втором способе.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить