Metodo con array?

Buongiorno a tutti…sto imparando a programmare con ruby ma non ho
ancora acquistato dimestichezza nel combinare diverse cose;
Ho un file txt che contiene parole e simboli di punteggiatura SEPARATI
DA UNO SPAZIO (è un testo tokenizzato).
Devo scrivere un metodo che prenda come argomento d’entrata il file con
il testo tokenizzato per ottenere alla fine un array di tokens. Il
risultato dovrebbe essere il seguente. Chiamando il metodo e inserendo
anche il nome del file mi dovrebbe apparire sullo schermo il contenuto
dell’array che peró dovrei organizzare in questo modo.

token 1= La
token 2= casa
token 3= è
token 4= grande
token 5= .

Grazie

ciao Francisco,

prima di tutto, la prossima volta usa un subject più consono ed in
minuscolo (sai quella roba di netiquette) :wink:

in secondo luogo, con tutta la disponibilità che puoi trovare qui, non
aspettarti che qualcuno ti scriva il programmino dal principio, anche
senza ulteriori dettagli, ad esempio come è strutturato il file da
leggere…

ad ogni modo, il procedimento da cui potresti cominciare è scomporlo in
problemi più semplici:

  • leggi il nome del file in input
  • apri il file e leggi le linee
  • per ciascuna linea tokenizza in base a qualche regex (o magari è anche
    più semplice) e mettilo in un array
  • etc…

come vedi sono operazioni molto semplici prese singolarmente :wink:

ciao,
A.

Il 04/08/2010 10:20, Francisco M. ha scritto:

Mi dispiace, ma come ho spiegato sono nuovo del settore; grazie comunque
per la disponibilitá.

F.

On Aug 4, 2010, at 10:20 AM, Francisco M. wrote:

Ho un file txt che contiene parole e simboli di punteggiatura SEPARATI
DA UNO SPAZIO (è un testo tokenizzato).
Devo scrivere un metodo che prenda come argomento d’entrata il file con
il testo tokenizzato per ottenere alla fine un array di tokens. Il
risultato dovrebbe essere il seguente. […]

token 1= La
token 2= casa
token 3= è
token 4= grande
token 5= .

$ irb
ruby-1.9.1-p378 > text = %(antani tapioca supercazzola come se fosse
sbiriguda .)
=> “antani tapioca supercazzola come se fosse sbiriguda .”

puoi usare File.read(‘file.txt’) al posto dell’inizializzazione

statica

ruby-1.9.1-p378 > tokens = text.split(/ +/)
=> [“antani”, “tapioca”, “supercazzola”, “come”, “se”, “fosse”,
“sbiriguda”, “.”]

il ‘+’ nella regex tratta più spazi consecutivi come uno singolo

ruby-1.9.1-p378 > i=0; tokens.inject({}) {|h, tok| h.update(“token
#{i+=1}” => tok)}
=> {“token 1”=>“antani”, “token 2”=>“tapioca”, “token
3”=>“supercazzola”, “token 4”=>“come”, “token 5”=>“se”, “token
6”=>“fosse”, “token 7”=>“sbiriguda”, “token 8”=>“.”}

Non mi è molto chiara la necessità dell’ultima rappresentazione che
richiedi,
anche per questo l’implementazione non è il massimo della bellezza. :slight_smile:

HTH,

~Marcello

~ [email protected]
~ http://www.linkedin.com/in/marcellobarnaba
~ http://sindro.me/