strings.HasPrefix în Go

Verifică dacă un text începe (HasPrefix) sau se termină (HasSuffix) cu un anumit text.

Sintaxă
func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool

Ce face strings.HasPrefix

strings.HasPrefix(s, prefix) spune dacă s începe cu prefix, iar strings.HasSuffix(s, suffix) dacă se termină cu suffix. Sunt folosite des pentru extensii de fișiere (.txt), adrese (https://), comenzi (/start) sau prefixe de telefon (+40).

Comparația este exactă, cu litere mari și mici. Un prefix sau sufix gol se potrivește cu orice text. Dacă vrei să și scoți prefixul, folosește strings.CutPrefix sau strings.TrimPrefix.

Parametri

Parametru Descriere
s Textul verificat.
prefix / suffix Începutul, respectiv sfârșitul căutat.

Ce returnează

true sau false.

Exemple

Exemplul 1: Filtrarea fișierelor după extensie

package main

import (
	"fmt"
	"strings"
)

func main() {
	fisiere := []string{"note.txt", "poza.JPG", "raport.pdf", "lista.txt"}
	for _, f := range fisiere {
		if strings.HasSuffix(f, ".txt") {
			fmt.Println("text:", f)
		}
	}
	fmt.Println(strings.HasSuffix("poza.JPG", ".jpg"))
	fmt.Println(strings.HasSuffix(strings.ToLower("poza.JPG"), ".jpg"))
}

Rezultat

text: note.txt
text: lista.txt
false
true

Exemplul 2: Numere de telefon și adrese

package main

import (
	"fmt"
	"strings"
)

func main() {
	for _, tel := range []string{"+40 721 000 111", "0721000111", "+33 6 12 34"} {
		fmt.Printf("%-16s românesc: %t\n", tel, strings.HasPrefix(tel, "+40") || strings.HasPrefix(tel, "07"))
	}
	url := "http://dexblog.ro"
	if !strings.HasPrefix(url, "https://") {
		fmt.Println("Adresa nu folosește HTTPS:", url)
	}
}

Rezultat

+40 721 000 111  românesc: true
0721000111       românesc: true
+33 6 12 34      românesc: false
Adresa nu folosește HTTPS: http://dexblog.ro

Greșeli frecvente

  • Verifici extensia cu Contains(f, ".txt"). Și „note.txt.exe” conține „.txt”; folosește HasSuffix.
  • Uiți că literele mari contează: „POZA.JPG” nu se termină cu „.jpg”. Transformă întâi cu strings.ToLower.

Comenzi înrudite

  • strings.CutPrefix: Scoate un prefix (CutPrefix) sau un sufix (CutSuffix) din text și spune dacă exista.
  • strings.TrimPrefix: Scoate o singură dată un prefix (TrimPrefix) sau un sufix (TrimSuffix) exact, dacă textul îl are.
  • 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.