Ciao,Originariamente inviato da HeroGian
ok, chiedo scusa se la mia domanda è risultata un po ambigua all'inizio...
Comunque ho provato a farlo col metodo IndexOf, come alka mi ha gentilmente indicato.
Ma purtroppo non riesco a capire come mai non mi stampa la X solamente nell'indice in cui è presente, vi sarei grato se riusciste a dirmi il perchè... chiedo scusa per le tante domande...
allora... il metodo "IndexOf(stringaDaControllare,indiceDiInizioRicerc a)" ti restituisce un intero che corrisponde alla prima occorrenza trova, e questo mi pare tu lo abbia capito. Quindi se tu fai il ciclo incrementando c mentre scorri i caratteri della stringa, fintanto che "c" è minore o uguale all'indice della prima occorrenza trovata, il risultato della condizione sarà sempre false perchè restituirà l'indice della prima occorrenza (>-1 quindi <0 = false). Quindi ricapitolando, se :
stringa = "automobile"
letteraUtente= "t"
vadiamo cosa avviene durante il ciclo (utilizzando i numeri al posto di "c") :
stringa.IndexOf(letteraUtente,0) = 2 (la prima occorrenza di "t" (dal carattere 0) è in posizione 2)
stringa.IndexOf(letteraUtente,1) = 2 (la prima occorrenza di "t" (dal carattere 1) è in posizione 2)
stringa.IndexOf(letteraUtente,2) = 2 (la prima occorrenza di "t" (dal carattere 2) è in posizione 2)
fino a qui hai ottenuto false alla condizione <0, quindi stampa x, ma attenzione, qui cambia :
stringa.IndexOf(letteraUtente,3) = -1 perchè dopo il carattere 2 (0 incluso, quindi dopo il terzo carattere) non esistono "t", quindi il metodo IndexOf non ha più nessun indice da restituire, idem per le successive (di conseguenza restituisce true la condizione <0 e stamperà _)
quindi il risultato è XXX_ _ _ _ _ _ _
se invece avessi una situazione del genere :
stringa = "automobile t"
letteraUtente= "t"
il ciclo sarà :
stringa.IndexOf(letteraUtente,0) = 2 (la prima occorrenza di "t" (dal carattere 0) è in posizione 2)
stringa.IndexOf(letteraUtente,1) = 2 (la prima occorrenza di "t" (dal carattere 1) è in posizione 2)
stringa.IndexOf(letteraUtente,2) = 2 (la prima occorrenza di "t" (dal carattere 2) è in posizione 2)
attenzione, qui cambia solo l'indice, ma nella condizione risulterà sempre false a <0:
stringa.IndexOf(letteraUtente,3) = 11 perchè la prima occorrenza dal carattere 3 si trova in posizione 11, quindi IndexOf ti restituirebbe fino alla fina della stringa 11 (quindi sempre false se la condizione è <0)
di conseguenza saranno tutte x. gatto sarebbe XXXX_ e via dicendo.
spero di aver risposto alla tua domanda citata.