Perl/Funzioni Native sulle variabili: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 103:
trovata 't' alla posizione 28
trovata 't' alla posizione 29
 
===rindex===
'''rindex''' Trova l'ultima ricorrenza di una stringa (SUBSTR) all'interno di un'altra stringa (STR) ritornandone la posizione.
 
'''NOTA1''' fa lo stesso tipo di ricerca di index ma a partire dal fondo.
 
'''NOTA2''' non vengono usate le regular expression pertanto è un confronto fra semplici stringhe.
 
Sintassi
#rindex STR,SUBSTR,POSITION
#rindex STR,SUBSTR
 
'''NOTA''' Se si indica una POSITION la ricerca parte al carattere indicato.
Questo può essere comodo per cercare una ricorrenza precedente senza alterare la stringa originale.
Da notare che occorrerà decrementare di uno il valore ritornato dalla funzione rindex per poter cercare l'elemento successivo.
POSITION è utile solo fra i valori 0 e length(STR)-1 (il carattere prima della fine della stringa).
Valori al di fuori di questi valori saranno ignorati.
Se la rindex non trova un valore torna -1.
 
Esempio d'uso
<source lang="perl">
my $a = 'questa è una stringa di caratteri 36';
#cerco dal fondo "una" in $a
my $p_una = rindex $a , "una";
print '"una" si trova alla posizione '.$p_una.' in $a'."\n";
my $una = 'una';
my $p_una = rindex( $a , $una );
print '"una" si trova alla posizione '.$p_una.' in $a'."\n";
#cerco dal fondo "t" in $a
my $b = rindex $a , "t";
print '"t" si trova alla posizione '.$b.' in $a'."\n";
my $b = rindex( $a , "t" );
print '"t" si trova alla posizione '.$b.' in $a'."\n";
#cerco "mela" in $a
my $b = rindex $a , "mela";
print '"mela" si trova alla posizione '.$b.' in $a'."\n"; # NON SI TROVA !
 
#cerco dal fondo "t" dopo la posizione di "una" in $a
my $c = rindex $a , "t" , $p_una;
print '"t" prima "una" si trova alla posizione '.$c.' in $a'."\n";
my $c = rindex( $a , "t" , $p_una );
print '"t" prima "una" si trova alla posizione '.$c.' in $a'."\n";
 
</source>
che produrrà :
 
"una" si trova alla posizione 9 in $a
"una" si trova alla posizione 9 in $a
"t" si trova alla posizione 29 in $a
"t" si trova alla posizione 29 in $a
"mela" si trova alla posizione -1 in $a
"t" prima "una" si trova alla posizione 4 in $a
"t" prima "una" si trova alla posizione 4 in $a
 
Vediamo ora un modo di cercare ogni SUB presente in una stringa usando index:
<source lang="perl">
my $a = 'questa è una stringa di caratteri 36';
print "cerco dal fondo 't' in '$a'\n";
#cerco "t" in $a
my $p =( length $a ) - 1;
while ( ($p = rindex $a , "t" , $p ) != -1 )
{
print "trovata 't' alla posizione $p \n";
$p--;
}
</source>
 
che produrrà:
 
cerco dal fondo 't' in 'questa è una stringa di caratteri 36'
trovata 't' alla posizione 29
trovata 't' alla posizione 28
trovata 't' alla posizione 14
trovata 't' alla posizione 4
 
 
 
rindex - right-to-left substring search
substr - get or alter a portion of a stirng
reverse - flip a string or a list