Ce face strings.Cut
strings.Cut(s, sep) caută prima apariție a lui sep și returnează trei valori: textul dinainte, textul de după și found, care spune dacă separatorul a fost găsit. Dacă nu a fost găsit, primești s, "", false.
Este cea mai simplă metodă de a despărți perechi de tipul cheie=valoare, nume:parolă sau utilizator@domeniu, fără să lucrezi cu poziții sau cu slice-uri ca la Split.
strings.CutLast, nou în Go 1.27, face același lucru la ultima apariție: util pentru extensia unui fișier (arhiva.tar.gz) sau ultimul segment dintr-o cale.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul de tăiat. |
sep |
Separatorul; nu apare în rezultat. |
Ce returnează
before (înainte de separator), after (după separator) și found (bool).
Exemple
Exemplul 1: Perechi cheie=valoare
package main
import (
"fmt"
"strings"
)
func main() {
setari := []string{"oras=Iași", "limba=ro", "tema"}
for _, s := range setari {
cheie, valoare, ok := strings.Cut(s, "=")
if !ok {
fmt.Printf("%q: lipsește '='\n", s)
continue
}
fmt.Printf("%s -> %s\n", cheie, valoare)
}
user, domeniu, _ := strings.Cut("ana.pop@exemplu.ro", "@")
fmt.Println(user, "|", domeniu)
}
Rezultat
oras -> Iași
limba -> ro
"tema": lipsește '='
ana.pop | exemplu.ro
Exemplul 2: Cut față de CutLast
Pe un nume cu două puncte, Cut taie la primul punct, iar CutLast la ultimul.
package main
import (
"fmt"
"strings"
)
func main() {
f := "backup.2026.tar.gz"
a, b, _ := strings.Cut(f, ".")
fmt.Printf("Cut: %q %q\n", a, b)
a, b, _ = strings.CutLast(f, ".")
fmt.Printf("CutLast: %q %q\n", a, b)
a, b, ok := strings.CutLast("fara-punct", ".")
fmt.Printf("negăsit: %q %q %t\n", a, b, ok)
}
Rezultat
Cut: "backup" "2026.tar.gz"
CutLast: "backup.2026.tar" "gz"
negăsit: "fara-punct" "" false
Greșeli frecvente
- Ignori
found. Când separatorul lipsește,aftereste gol și programul tratează greșit datele; verifică al treilea rezultat. - Folosești
CutLastcu o versiune de Go mai veche de 1.27: funcția nu există. Acolo foloseștestrings.LastIndexși tăiere manuală.
Comenzi înrudite
strings.CutPrefix: Scoate un prefix (CutPrefix) sau un sufix (CutSuffix) din text și spune dacă exista.strings.Split: Împarte textul în bucăți după un separator exact; SplitN limitează numărul de bucăți, SplitAfter păstrează separatorul.strings.Index: Returnează poziția (în octeți) a primei sau ultimei apariții a unui text, octet sau caracter; -1 dacă nu există.