Ce face strings.Contains
strings.Contains(s, substr) returnează true dacă textul substr apare undeva în s. Comparația ține cont de litere mari și mici și de diacritice: „iasi” nu este găsit în „Iași”. Un substr gol este găsit în orice text.
Variantele: ContainsAny(s, chars) verifică dacă s conține măcar unul dintre caracterele din chars; ContainsRune(s, r) caută un singur caracter (o valoare rune, scrisă între apostrofuri: 'ș'); ContainsFunc(s, f) verifică dacă vreun caracter respectă condiția dată de funcția f, de exemplu unicode.IsDigit.
Dacă ai nevoie și de poziție, folosește strings.Index. Pentru o căutare fără să conteze literele mari, transformă ambele texte cu strings.ToLower sau compară cu strings.EqualFold.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul în care se caută. |
substr |
Textul căutat. |
chars |
La ContainsAny: setul de caractere; ajunge să apară unul singur. |
r |
La ContainsRune: caracterul căutat. |
f |
La ContainsFunc: funcția care primește fiecare caracter și spune dacă e cel căutat. |
Ce returnează
true dacă s-a găsit, altfel false.
Exemple
Exemplul 1: Căutarea unui cuvânt
package main
import (
"fmt"
"strings"
)
func main() {
adresa := "Str. Lăpușneanu 12, Iași"
fmt.Println(strings.Contains(adresa, "Iași"))
fmt.Println(strings.Contains(adresa, "iasi"))
fmt.Println(strings.Contains(strings.ToLower(adresa), "iași"))
fmt.Println(strings.Contains(adresa, ""))
}
Rezultat
true
false
true
true
Exemplul 2: ContainsAny, ContainsRune și ContainsFunc
Verificăm o parolă: are un caracter special? are o cifră? are litera ș? unicode.IsDigit se dă fără paranteze, ca valoare-funcție.
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
for _, parola := range []string{"mașina2026!", "soare"} {
fmt.Printf("%-12s special: %-5t cifră: %-5t are ș: %t\n",
parola,
strings.ContainsAny(parola, "!@#$%"),
strings.ContainsFunc(parola, unicode.IsDigit),
strings.ContainsRune(parola, 'ș'))
}
}
Rezultat
mașina2026! special: true cifră: true are ș: true
soare special: false cifră: false are ș: false
Greșeli frecvente
- Te aștepți ca
Containssă ignore literele mari sau diacriticele. Nu le ignoră: „Brasov” nu este găsit în „Brașov”. - Confunzi
ContainsAny(s, "abc")cuContains(s, "abc"). Prima caută oricare dintre literele a, b, c; a doua caută textul „abc” întreg. - Scrii
ContainsRune(s, "ș")cu ghilimele. Ghilimelele dau unstring; pentrurunefolosește apostrofuri:'ș'.
Comenzi înrudite
strings.Index: Returnează poziția (în octeți) a primei sau ultimei apariții a unui text, octet sau caracter; -1 dacă nu există.strings.HasPrefix: Verifică dacă un text începe (HasPrefix) sau se termină (HasSuffix) cu un anumit text.strings.Count: Numără de câte ori apare un text în alt text, fără suprapuneri.strings.EqualFold: Compară două texte fără să țină cont de litere mari și mici, corect și pentru diacritice.unicode.IsLetter: Verifică tipul unui caracter: literă, cifră, număr, spațiu alb sau semn de punctuație, după regulile Unicode.