strings.EqualFold în Go

Compară două texte fără să țină cont de litere mari și mici, corect și pentru diacritice.

Sintaxă
func EqualFold(s, t string) bool

Ce face strings.EqualFold

strings.EqualFold(s, t) returnează true dacă textele sunt egale când ignori diferența dintre litere mari și mici. Funcționează pe Unicode, deci „ȘCOALĂ” și „școală” sunt egale.

Este mai rapid și mai corect decât strings.ToLower(a) == strings.ToLower(b), pentru că nu creează texte noi. Diacriticele nu sunt ignorate: „Iasi” și „Iași” rămân diferite.

Parametri

Parametru Descriere
s, t Textele comparate.

Ce returnează

true dacă textele sunt egale fără să conteze literele mari.

Exemple

Exemplul 1: Răspunsuri scrise oricum

package main

import (
	"fmt"
	"strings"
)

func main() {
	raspunsuri := []string{"DA", "da", "Da", "nu"}
	for _, r := range raspunsuri {
		fmt.Printf("%-3s este „da”? %t\n", r, strings.EqualFold(r, "da"))
	}
	fmt.Println(strings.EqualFold("ȘCOALĂ", "școală"))
	fmt.Println(strings.EqualFold("Iasi", "Iași"))
}

Rezultat

DA  este „da”? true
da  este „da”? true
Da  este „da”? true
nu  este „da”? false
true
false

Greșeli frecvente

  • Te aștepți ca EqualFold să ignore diacriticele. Nu le ignoră: „ș” și „s” sunt litere diferite.
  • Folosești == pentru adrese de e-mail sau comenzi tastate de utilizator. „Ana@Exemplu.ro” nu este egal cu „ana@exemplu.ro”.

Comenzi înrudite

  • strings.Compare: Compară două texte octet cu octet și returnează -1, 0 sau 1; util la sortare.
  • strings.ToUpper: Returnează textul scris cu litere mari (ToUpper) sau mici (ToLower), inclusiv diacriticele.
  • strings.Contains: Verifică dacă un text conține un alt text, unul dintre niște caractere, un caracter anume sau un caracter care respectă o condiție.