[29] Come conto il numero di occorrenze di una sottostringa all'interno di una stringa?
Ci sono varie strade, con un diverso grado di efficienza. Se ciò
che desiderate è il conto delle occorrenze di un determinato
carattere singolo (X) all'interno di una stringa, potete utilizzare la
funzione "tr///" in questo modo:
$stringa = "QuestaXlineaXhaXalcuneXxXalXsuoXinterno";
$conto = ($stringa =~ tr/X//);
print "Ci sono $conto caratteri X nella stringa";
Questo funziona benissimo quando state cercando un singolo cattere. Se
state cercando di contare le occorrenze di una sottostringa composta da
più caratteri all'interno di una stringa, "tr///" non funziona.
Quello che potete fare è inserire la ricerca globale di un pattern
[schema, NdT] all'interno di un while(). Per esempio, contiamo gli interi
negativi:
$stringa = "-9 55 48 -2 23 -76 4 14 -44";
while ($stringa =~ /-\d+/g) { $conto++ }
print "Ci sono $conto interi negativi nella stringa";
Un'altra versione usa una ricerca globale in contesto di lista, assegnandone
poi il risultato ad uno scalare, generando un conto del numero di
sottostringhe trovate.
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!