strings.ToUpper în Go

Returnează textul scris cu litere mari (ToUpper) sau mici (ToLower), inclusiv diacriticele.

Sintaxă
func ToUpper(s string) string
func ToLower(s string) string

Ce face strings.ToUpper

strings.ToUpper(s) transformă toate literele în majuscule, iar strings.ToLower(s) în litere mici. Funcționează pe Unicode, deci „ștefan” devine „ȘTEFAN”, iar „ÎNVĂȚĂM” devine „învățăm”. Cifrele și semnele rămân neschimbate.

Funcțiile returnează un text nou; originalul nu se schimbă. Pentru a compara două texte fără să conteze literele mari, strings.EqualFold este mai eficient decât să transformi ambele texte.

Pentru a face doar prima literă mare, Go nu are o funcție gata făcută (strings.Title este depreciată); vezi exemplul 2.

Parametri

Parametru Descriere
s Textul de transformat.

Ce returnează

Textul nou, cu literele mari, respectiv mici.

Exemple

Exemplul 1: Majuscule și litere mici

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.ToUpper("ștefan cel mare, 1457"))
	fmt.Println(strings.ToLower("ÎNVĂȚĂM GO ÎN IAȘI"))
	email := "  Ana.Pop@Exemplu.RO "
	fmt.Println(strings.ToLower(strings.TrimSpace(email)))
}

Rezultat

ȘTEFAN CEL MARE, 1457
învățăm go în iași
ana.pop@exemplu.ro

Exemplul 2: Prima literă mare

Luăm primul caracter cu utf8.DecodeRuneInString (poate avea 2 octeți, ca ș), îl facem mare și lipim restul.

package main

import (
	"fmt"
	"strings"
	"unicode"
	"unicode/utf8"
)

func primaMare(s string) string {
	r, n := utf8.DecodeRuneInString(s)
	if r == utf8.RuneError {
		return s
	}
	return string(unicode.ToUpper(r)) + strings.ToLower(s[n:])
}

func main() {
	for _, nume := range []string{"ștefan", "ANA", "țara", ""} {
		fmt.Printf("%q\n", primaMare(nume))
	}
}

Rezultat

"Ștefan"
"Ana"
"Țara"
""

Greșeli frecvente

  • Faci prima literă mare cu strings.ToUpper(s[:1]) + s[1:]. Pentru „ștefan”, s[:1] este doar primul octet din ș și textul se strică.
  • Uiți să salvezi rezultatul: strings.ToUpper(s) nu modifică s.

Comenzi înrudite

  • strings.ToTitle: ToTitle transformă literele în forma „de titlu”; variantele Special folosesc regulile unei limbi (de exemplu turca).
  • strings.EqualFold: Compară două texte fără să țină cont de litere mari și mici, corect și pentru diacritice.
  • unicode.ToUpper: Transformă un singur caracter în literă mare, mică sau în forma de titlu; celelalte caractere rămân neschimbate.
  • bytes.Contains: Variantele pentru []byte ale funcțiilor strings.Contains, strings.TrimSpace și strings.ToUpper.