unicode.ToUpper în Go

Transformă un singur caracter în literă mare, mică sau în forma de titlu; celelalte caractere rămân neschimbate.

Sintaxă
func ToUpper(r rune) rune
func ToLower(r rune) rune
func ToTitle(r rune) rune

Ce face unicode.ToUpper

unicode.ToUpper(r), unicode.ToLower(r) și unicode.ToTitle(r) lucrează pe un singur caracter (rune), nu pe un text întreg. Dacă caracterul nu are o formă mare sau mică (cifre, semne), este returnat neschimbat.

Pentru texte întregi folosește strings.ToUpper și strings.ToLower. Funcțiile pe caracter sunt utile când vrei să schimbi doar anumite litere, de exemplu prima literă dintr-un cuvânt. ToTitle diferă de ToUpper doar la câteva litere duble (dž → Dž, nu DŽ).

Parametri

Parametru Descriere
r Caracterul de transformat.

Ce returnează

Caracterul transformat (rune).

Exemple

Exemplul 1: Prima literă a fiecărui cuvânt

package main

import (
	"fmt"
	"strings"
	"unicode"
)

func main() {
	s := "ștefan cel mare și sfânt"
	var sb strings.Builder
	inceputCuvant := true
	for _, r := range s {
		if inceputCuvant {
			r = unicode.ToTitle(r)
		}
		sb.WriteRune(r)
		inceputCuvant = unicode.IsSpace(r)
	}
	fmt.Println(sb.String())
}

Rezultat

Ștefan Cel Mare Și Sfânt

Exemplul 2: Caracter cu caracter

package main

import (
	"fmt"
	"unicode"
)

func main() {
	for _, r := range []rune{'ș', 'Ț', '5', 'dž'} {
		fmt.Printf("%c: upper %c, lower %c, title %c\n", r, unicode.ToUpper(r), unicode.ToLower(r), unicode.ToTitle(r))
	}
}

Rezultat

ș: upper Ș, lower ș, title Ș
Ț: upper Ț, lower ț, title Ț
5: upper 5, lower 5, title 5
dž: upper DŽ, lower dž, title Dž

Greșeli frecvente

  • Dai un string: unicode.ToUpper("ș") nu compilează. Folosește 'ș' sau strings.ToUpper.
  • Faci byte(unicode.ToUpper(rune(s[0]))) pe un text cu diacritice: primul octet al lui ș nu este o literă. Decodează întâi caracterul cu utf8.DecodeRuneInString.

Comenzi înrudite

  • strings.ToUpper: Returnează textul scris cu litere mari (ToUpper) sau mici (ToLower), inclusiv diacriticele.
  • strings.ToTitle: ToTitle transformă literele în forma „de titlu”; variantele Special folosesc regulile unei limbi (de exemplu turca).
  • unicode.IsUpper: Verifică dacă un caracter este literă mare (IsUpper) sau literă mică (IsLower).
  • strings.Map: Transformă fiecare caracter al textului cu o funcție; dacă funcția returnează -1, caracterul este șters.