Lettura file di testo

salve a tutti,

l’argomento e’ gia’ stato trattato qualche post fa ma ho ancora dei
dubbi.
Premetto che sto muovendo i primi passi in ruby e sto cercando di
scrivere semplici programmi senza l’utilizzo di classi o funzioni
avanzate,
almeno per il momento.

Come esercizio stavo sperimentando un programma molto semplice, per
mezzo del quale apro un file di testo e stampo sull’output le occorrenze
del

carattere “x” con un’altro:

f = file.open(“prova.txt”)

x= f.getc
while x
if x == “c”
print " "
else
print x
end
x = f.getc
end

il risultato pero’ e’ una sequenza numerica …
qualcuno ha capito cosa sto sbagliando?

grazie per qualsiasi aiuto

massimo

E’ il codice ascii quello che becchi, direi.

:slight_smile:

“print x.chr” dovrebbe funzionare!

Massimo C. wrote:

mezzo del quale apro un file di testo e stampo sull’output le
else
massimo


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


“Remember, always be yourself. Unless you suck.” - Joss Whedon

si, funziona :slight_smile:
che fesso che sono, cmq mi lascia degli spazi nell’output
e non mi cambia il carattere … ma, stasera cercher’ di capirci
qualcosa

grazie!

ciao

Il 06/09/06, david [email protected] ha scritto:

f=File.open(“prova.txt”) #File con la maiuscola :wink:
while(x=f.getc) #così è più elegante e leggibile
if x.chr==“c” #devi usare .chr anche qui o usare il
codice asci del carattere
print " "
else
print x.chr
end
end
f.close

Naturalmente tutto questo non funziona con gli encoding multibyte, che
io sappia:-/


David N. Welton

Linux, Open Source Consulting

Infatti. In una mia applicazione arrivano dei file CSV nati in Siebel
CRM: sono in UTF-16 e processarli è una brutta vicenda. Alla fine ho
optato per una chiamata “system” al commando iconv che converte
l’originale e lo scrive in /tmp.

Il giorno in cui Ruby parla unicode sarò molto felice.

:frowning:

David W. wrote:

Naturalmente tutto questo non funziona con gli encoding multibyte, che
io sappia:-/


“Remember, always be yourself. Unless you suck.” - Joss Whedon

f=File.open(“prova.txt”) #File con la maiuscola :wink:
while(x=f.getc) #così è più elegante e leggibile
if x.chr==“c” #devi usare .chr anche qui o usare il
codice asci del carattere
print " "
else
print x.chr
end
end
f.close

così funziona :slight_smile:

2006/9/6, Massimo C. [email protected]:

accidenti … e chi se lo aspettava che una cosa cosi’ semplice fosse
cosi’
complessa ? :")

grazie a tutti per i chiarimenti

Il 06/09/06, Stefano C. [email protected] ha scritto:

On Sep 6, 2006, at 2:08 PM, Massimo C. wrote:

mezzo del quale apro un file di testo e stampo sull’output le
occorrenze del

carattere “x” con un’altro:

IO#getc ritorna un intero, se lo vuoi confrontare
con un carattere senza usare il suo codice ASCII puoi usare la
notazione ?c (e.g. ?A e’
uguale a 65, ?B a 66 ecc.)
E questa forma:

if cond
print this
else
print that
end

e’ piu’ compatta scritta cosi’:

print cond ? this : that

(anche se molti aborrono l’operatore ?:slight_smile:

pero’ fai prima cosi’:

STDOUT.write(File.read(‘prova.txt’).tr(‘x’, ’ '))

:slight_smile: