Ciao ragazzi,eccomi di nuovo a chiedere il vostro aiuto.Ho creato un
pre-programma che ha lo scopo di eliminare gli spazi vuoti che si
trovano all’inizio delle frasi,ad esempio:
" ciao" #sono tante frasi che hanno gli spazi
simili a
" come va" #questo che ho scritto
“tutto bene”
Io ho provato con questo codice,che va a leggere il testo da un file
txt.Il codice è il seguente:
primariga=[]
arr=IO.readlines(“prova.txt”)
valore=0
for i in 0 … arr.size-1 #Ho creto questo for in modo che si vada a
prendere
primariga=arr[valore].split(/\s/) #una frase alla volta,e gli applchi
valore=valore+1 #il blocco di codice
while primariga[0] == nil
…codice del blocco…
puts “eccoci” #l’ho usato per vedere se funziona bene il
while
end
end
Il problema che ho è che ottengo un loop infinito di parole
“eccoci”.Come posso risolvere???
Il giorno 23 aprile 2009 15.51, Stefano De nigris [email protected]ha scritto:
valore=valore+1 #il blocco di codice
while primariga[0] == nil
…codice del blocco…
puts “eccoci” #l’ho usato per vedere se funziona bene il
while
end
end
Perfetto è quella l’idea…pero è da oltre a queste righe che inziano
con spazi vuoti ci sono anche righe con spazi vuoti,e in quel caso
vorrei che non facesse niente il blocco di codice.Un esempio di testo
eccolo:
" ciao ciao"
" come va??tutto bene"
" "
“eh si tutto bene :D”
" meglio cosi"
" allora io vado ciao"
Pierpaolo…la soluzione sarebbe quella che hai detto tu,pero prima di
fare cio devi far funzionare il blocco del while,perche non vuole
saperne di funzionare;ad esempio se fai nel blocco del while–>
puts"ciao" noterai che non ti stampera nulla a video.Quindi il problema
è li.
Davide dove lo devo sostituire??Tu dici in:
primariga=arr[valore].split(/\s/)
Se è si…non posso modificare questo valore perche se no mi
modificherebbe tutto il programma che viene dopo questo
pre-programma.Capito???
Pierpaolo scusa ma sarò un rompi… ma non è possibile usare questo
codice:
primariga=[]
arr=IO.readlines(“prova.txt”)
valore=0
for i in 0 … arr.size-1
primariga=arr[valore].split(/\s/)
valore=valore+1
while primariga[0] == nil #o un altro costrutto ciclico
…blocco di codice in cui userò lstrip…
puts"ciao" #è per verificare se funzione il while
end
puts primariga.join(" ")
end
andando pero a cambiare solo il while con un if (o un altro costrutto
ciclico)??Perche tutte le istruzioni,escluse il while,fanno parte di un
programma che converte il file di testo.Quindi se vado a cambiare tutto
questo codice significa che cambiero tutto il programma.Scusami!!!
Antonio…ho provato ad applicarla mi mi escono solo numeri,credo che
rappresentino le parole.
Ho provato a cancellare tutto il codice inziale che avevo creato e l’ho
sostituito con il tuo (Antonio) e funziona perfettamente.Tuttavia non
posso applicarlo al mio programma perche se no mi cambia tutto e dovrei
rifarlo dall’inizio.Esiste una soluzione simile da applicare a questo
codice qui:
Ciao ragazzi ho una curiosità da chiedervi.Come sapete ho modificato il
programma che mi è stato suggerito da Pierpaolo in questo modo:
primariga=[]
arr=IO.readlines(“record.txt”)
valore=0
testo_senza_spazi = [/\s/]
for i in 0 … arr.size-1
primariga=arr[valore].split(/\s/)
valore=valore+1
line = arr[valore-1]
testo_senza_spazi << (line =~ /\s+\n/ ? line : line.lstrip)
primariga=testo_senza_spazi
puts primariga
end
in modo tale che funzioni per il mio caso specifico.Il mio dubbio è il
seguente: è possibile far stampare una sola volta la variabile
primariga,perche se lo mandate in esecuzione con questo testo:
type
nomeclasse=class(piugrande)
public
constructor nome;
destructor destroy;override;
procedure clear;
procedure load(stream:tstream);
function write(buffer:longint):longint;override;
private
procedure setcapacity(newcapacity:longint);
protected
function reajlloc(var newcapacity:longint):pointer;virtual;
property capacity:longint read fcapacity write setcapacity;
end;
noterete che stampa ciclicamente il testo,che è corretto.Ok?!