strings.TrimSpace în Go

Scoate spațiile albe (spații, tab, rânduri noi) de la începutul și sfârșitul textului.

Sintaxă
func TrimSpace(s string) string

Ce face strings.TrimSpace

strings.TrimSpace(s) elimină toate spațiile albe de la ambele capete: spațiu, \t, \n, \r și celelalte spații Unicode. Spațiile din interiorul textului rămân.

Este funcția pe care o aplici aproape mereu pe textul citit de la tastatură sau dintr-un fișier: rândul citit cu ReadString('\n') conține rândul nou la final, iar pe Windows și \r.

Parametri

Parametru Descriere
s Textul de curățat.

Ce returnează

Textul fără spații albe la capete.

Exemple

Exemplul 1: Curățarea datelor introduse

package main

import (
	"fmt"
	"strings"
)

func main() {
	intrari := []string{"  Ana  ", "\tIași\n", "Cluj Napoca\r\n", "   "}
	for _, s := range intrari {
		fmt.Printf("%q -> %q\n", s, strings.TrimSpace(s))
	}
}

Rezultat

"  Ana  " -> "Ana"
"\tIași\n" -> "Iași"
"Cluj Napoca\r\n" -> "Cluj Napoca"
"   " -> ""

Exemplul 2: Rând citit de la tastatură

ReadString('\n') returnează rândul împreună cu \n. Fără TrimSpace, comparația cu „da” ar fi falsă.

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	rand, _ := in.ReadString('\n')
	fmt.Printf("citit: %q\n", rand)
	fmt.Println("fără TrimSpace:", rand == "da")
	fmt.Println("cu TrimSpace:", strings.TrimSpace(rand) == "da")
}

Ce scrie utilizatorul (intrare)

  da

Rezultat

citit: "  da \n"
fără TrimSpace: false
cu TrimSpace: true

Greșeli frecvente

  • Te aștepți ca TrimSpace să scoată și spațiile duble din mijloc. Nu le scoate; pentru asta folosește strings.Join(strings.Fields(s), " ").

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.TrimPrefix: Scoate o singură dată un prefix (TrimPrefix) sau un sufix (TrimSuffix) exact, dacă textul îl are.
  • strings.TrimFunc: Scoate de la capete caracterele pentru care funcția dată returnează true (la ambele capete, la început sau la sfârșit).
  • strings.Fields: Împarte textul în cuvinte după spații (oricâte, inclusiv tab și rând nou); FieldsFunc după o condiție a ta.
  • bytes.Contains: Variantele pentru []byte ale funcțiilor strings.Contains, strings.TrimSpace și strings.ToUpper.