strings.Count în Go

Numără de câte ori apare un text în alt text, fără suprapuneri.

Sintaxă
func Count(s, substr string) int

Ce face strings.Count

strings.Count(s, substr) returnează numărul de apariții ale lui substr în s. Aparițiile nu se suprapun: în „aaaa”, „aa” este numărat de 2 ori, nu de 3.

Caz special: dacă substr este gol, Count returnează numărul de caractere (nu de octeți) plus 1. Pentru a număra caracterele unui text, folosește clar utf8.RuneCountInString.

Parametri

Parametru Descriere
s Textul în care se numără.
substr Textul numărat.

Ce returnează

Numărul de apariții (int).

Exemple

Exemplul 1: Numărarea cuvintelor și a rândurilor

package main

import (
	"fmt"
	"strings"
)

func main() {
	text := "Ana are mere.\nIon are pere.\nMaria are prune.\n"
	fmt.Println("rânduri:", strings.Count(text, "\n"))
	fmt.Println("„are”:", strings.Count(text, "are"))
	fmt.Println("„aa” în „aaaa”:", strings.Count("aaaa", "aa"))
}

Rezultat

rânduri: 3
„are”: 3
„aa” în „aaaa”: 2

Exemplul 2: Count cu text gol numără caracterele

package main

import (
	"fmt"
	"strings"
)

func main() {
	s := "Țară"
	fmt.Println(len(s), "octeți")
	fmt.Println(strings.Count(s, ""), "= numărul de caractere + 1")
	fmt.Println(strings.Count(s, "ă"), "litera ă")
}

Rezultat

6 octeți
5 = numărul de caractere + 1
1 litera ă

Greșeli frecvente

  • Numeri cuvintele cu Count(text, " ") + 1. Spațiile duble sau de la capete dau rezultat greșit; folosește len(strings.Fields(text)).
  • Te aștepți ca Count să numere și aparițiile suprapuse. Nu le numără.

Comenzi înrudite

  • 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.
  • 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.Fields: Împarte textul în cuvinte după spații (oricâte, inclusiv tab și rând nou); FieldsFunc după o condiție a ta.
  • unicode/utf8.RuneCountInString: Numără caracterele (rune) dintr-un text UTF-8; len() numără octeții, iar ă, î, ș, ț ocupă câte 2 octeți.