Come nella maggior parte dei linguaggi di programmazione, anche in Tcl è possibile fare delle ricerche confrontando una coppia di stringhe di caratteri sfruttando anche dei caratteri speciali.

Per svolgere questo compito utilizziamo il comando string insieme al suo sottocomano match.

Il primo argomento del comando string è un sottocomando che identifica una specifica funzione.

# sintassi
string match ?-nocase? pattern string

Vediamo un esempio senza l’uso dei caratteri speciali.

if {[string match "I love pizza" "I love piza"]} then {
    puts "OK"
} else {
    puts "Not OK"
}
---
Not OK

Uso dei caratteri speciali

Vediamo i principali caratteri speciali:

  • * (asterisco): considera una quantità variabile di caratteri di qualsiasi tipo compresa la stringa nulla.
  • ? (punto di domanda): considera un solo carattere di qualsiasi tipo.
  • [...] (parentesi quadre): permette di operare una ricerca considerando uno specifico range di caratteri.
  • /x (barra rovesciata): permette i fare ricerche anche sui caratteri speciali * e ? disabilitandone la loro funzione e considerandoli come semplici caratteri.

Vediamo alcuni esempi di codice.

# Uso dell'asterisco
if {[string match f* foo]} then {
    puts "It matches!"
} else {
    puts "It doesn't matches."
}

# Uso del punto di domanda
if {[string match f?? foo]} then {
    puts "It matches!"
} else {
    puts "It doesn't matches."
}

# Uso delle parentesi quadre
if {[string match {[a-z]} f]} then {
    puts "It matches!"
} else {
    puts "It doesn't matches."
}

# Esempio senza caratteri speciali
if {[string match f foo]} then {
    puts "It matches!"
} else {
    puts "It doesn't matches."
}
---
It matches!
It matches!
It matches!
It doesn't matches.

Nota: con il range [a-b] viene intercettato qualsiasi carattere alfabetico minuscolo.


Nel prossimo articolo vedremo il funzionamento di tre sottocomandi del comando string: quelli per lavorare con la lunghezza, la posizione e la sezione di una stringa.