a_butta (Member)
Expert
Messaggi: 578
Iscritto: 16/03/2010
|
Non riesco a trovare una soluzione per cancellare tutti gli spazi da una stringa data.
Io avevo pensato a un ragionamento di questo genere: intanto vedo attraverso un ciclo while se ci sono spazi all'inizio, e metto in una variabile k il numero del carattere da cui inizia la stringa che non sia uno spazio. Da lì parto con un ciclo for che va da k alla lunghezza della stringa e pongo la condizione che ogni volta che il carattere della stringa è uno spazio allora metto in una stringa di passaggio la copia della stringa iniziale che va da k a i-1.
E' un po' difficile da spiegare perciò vi posto il codice della funzione.
Codice sorgente - presumibilmente Delphi |
function SpaceEraser(s:string):string; var i,n,k:byte; stringa: string; begin stringa:= ''; k:= 1; while s[k] = ' ' do begin k+=1; ShowMessage(IntToStr(k)); end; n:=k; for i:=k to length(s)-1 do begin if s[i] = ' ' then begin stringa += copy(s,n,i-1); n:=i+1; end; end; SpaceEraser:= stringa; end;
|
Purtroppo non funziona completamente. Cioè il primo spazio riesce a cancellarmelo ma dal secondo in poi non funziona più.
Ad esempio de metto ciao ciao ciao mi restituisce ciaociao ciao
se metto asd dsa fdmns mi restituisce asddsa fdm
Non riesco a capire dov'è l'errore e come posso correggere! Help!
Grazie a tutti
Saluti
|