strings.TrimPrefix în Go

Scoate o singură dată un prefix (TrimPrefix) sau un sufix (TrimSuffix) exact, dacă textul îl are.

Sintaxă
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string

Ce face strings.TrimPrefix

strings.TrimPrefix(s, prefix) returnează s fără prefix de la început, dacă îl are; altfel returnează s neschimbat. TrimSuffix face același lucru cu sfârșitul. Se scoate o singură apariție, ca text exact.

Dacă vrei să știi și dacă prefixul a existat, folosește strings.CutPrefix, care returnează și un bool.

Parametri

Parametru Descriere
s Textul.
prefix / suffix Textul exact de scos de la început / sfârșit.

Ce returnează

Textul fără prefix (sufix) sau textul neschimbat.

Exemple

Exemplul 1: Adrese, extensii și monede

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.TrimPrefix("https://dexblog.ro", "https://"))
	fmt.Println(strings.TrimPrefix("dexblog.ro", "https://"))
	fmt.Println(strings.TrimSuffix("raport.txt", ".txt"))
	fmt.Println(strings.TrimSuffix("150 lei lei", " lei"))
}

Rezultat

dexblog.ro
dexblog.ro
raport
150 lei

Exemplul 2: Numele fișierelor fără extensie

package main

import (
	"fmt"
	"strings"
)

func main() {
	for _, f := range []string{"tema1.go", "tema2.go", "README.md"} {
		fmt.Println(strings.TrimSuffix(f, ".go"))
	}
}

Rezultat

tema1
tema2
README.md

Greșeli frecvente

  • Te aștepți ca TrimSuffix să scoată toate aparițiile repetate: „150 lei lei” devine „150 lei”, nu „150”. Se scoate o singură dată.
  • Confunzi cu TrimLeft/TrimRight, care primesc un set de caractere, nu un text exact.

Comenzi înrudite

  • strings.CutPrefix: Scoate un prefix (CutPrefix) sau un sufix (CutSuffix) din text și spune dacă exista.
  • strings.HasPrefix: Verifică dacă un text începe (HasPrefix) sau se termină (HasSuffix) cu un anumit text.
  • strings.Trim: Scoate de la capete orice caracter din setul dat: Trim la ambele capete, TrimLeft doar la început, TrimRight doar la sfârșit.