Ce face strings.CutPrefix
strings.CutPrefix(s, prefix) verifică dacă s începe cu prefix și, dacă da, returnează restul textului și true. Altfel returnează textul neschimbat și false. CutSuffix face la fel cu sfârșitul.
Înlocuiește combinația if strings.HasPrefix(s, p) { s = strings.TrimPrefix(s, p) } cu un singur apel. Este potrivită pentru comenzi (/start), antete (Bearer …) sau extensii.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul. |
prefix / suffix |
Partea care se scoate de la început / sfârșit. |
Ce returnează
Textul rămas și found, care spune dacă prefixul (sufixul) a existat.
Exemple
Exemplul 1: Comenzi de chat
package main
import (
"fmt"
"strings"
)
func main() {
for _, mesaj := range []string{"/vreme Iași", "/ajutor", "bună ziua"} {
if oras, ok := strings.CutPrefix(mesaj, "/vreme "); ok {
fmt.Println("caut vremea pentru", oras)
} else if strings.HasPrefix(mesaj, "/") {
fmt.Println("comandă:", mesaj[1:])
} else {
fmt.Println("mesaj obișnuit:", mesaj)
}
}
}
Rezultat
caut vremea pentru Iași
comandă: ajutor
mesaj obișnuit: bună ziua
Exemplul 2: Extensia unui fișier
package main
import (
"fmt"
"strings"
)
func main() {
for _, f := range []string{"raport.pdf", "poza.png"} {
nume, ePDF := strings.CutSuffix(f, ".pdf")
fmt.Printf("%-11s PDF: %-5t nume: %s\n", f, ePDF, nume)
}
}
Rezultat
raport.pdf PDF: true nume: raport
poza.png PDF: false nume: poza.png
Greșeli frecvente
- Te aștepți ca un prefix gol să returneze
false. Un prefix gol există în orice text, decifoundestetrue.
Comenzi înrudite
strings.HasPrefix: Verifică dacă un text începe (HasPrefix) sau se termină (HasSuffix) cu un anumit text.strings.TrimPrefix: Scoate o singură dată un prefix (TrimPrefix) sau un sufix (TrimSuffix) exact, dacă textul îl are.strings.Cut: Taie textul în două la prima (Cut) sau ultima (CutLast) apariție a separatorului și spune dacă l-a găsit.