Ce face strings.TrimFunc
strings.TrimFunc(s, f) elimină de la ambele capete caracterele pentru care f returnează true, până la primul caracter care nu respectă condiția. TrimLeftFunc lucrează doar la început, TrimRightFunc doar la sfârșit.
Sunt utile când setul de caractere este descris mai ușor printr-o regulă: „tot ce nu este literă”, „cifrele”, „semnele de punctuație” (unicode.IsPunct).
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul. |
f |
Condiția: true pentru caracterele de eliminat. |
Ce returnează
Textul curățat la capete.
Exemple
Exemplul 1: Curățarea cuvintelor de punctuație
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
for _, c := range strings.Fields("«Bună», ziua... (Ana)!") {
fmt.Printf("%-10q -> %q\n", c, strings.TrimFunc(c, unicode.IsPunct))
}
}
Rezultat
"«Bună»," -> "Bună"
"ziua..." -> "ziua"
"(Ana)!" -> "Ana"
Exemplul 2: Doar la un capăt
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
cod := "0042AB-77"
fmt.Println(strings.TrimLeftFunc(cod, func(r rune) bool { return r == '0' }))
fmt.Println(strings.TrimRightFunc(cod, unicode.IsDigit))
fmt.Println(strings.TrimFunc(cod, unicode.IsDigit))
}
Rezultat
42AB-77
0042AB-
AB-
Greșeli frecvente
- Te aștepți ca TrimFunc să scoată caracterele și din mijloc. Lucrează doar la capete; pentru tot textul folosește
strings.Mapsaustrings.FieldsFunc.
Comenzi înrudite
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.strings.TrimSpace: Scoate spațiile albe (spații, tab, rânduri noi) de la începutul și sfârșitul textului.strings.IndexAny: Poziția primului sau ultimului caracter dintr-un set (IndexAny) ori care respectă o condiție (IndexFunc); -1 dacă nu există.unicode.IsLetter: Verifică tipul unui caracter: literă, cifră, număr, spațiu alb sau semn de punctuație, după regulile Unicode.