Forum: Italian Ruby user group Manipolazione stringhe

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Afb380f6c9adae5d99b582a4a36b1484?d=identicon&s=25 Davide Monfrecola (Guest)
on 2009-03-18 10:54
(Received via mailing list)
Ciao a tutti,
ho un piccolo problema con la manipolazione delle stringhe.
Praticamente io leggo da file e inserisco tutto all'interno di una
variabile:

@buffer = IO.read(file).downcase!

Dopodichè formo un array con tutte le parole contenute in @buffer
usando split

@content = @buffer.split(" ")

A questo punto, a me serve eliminare tutti i caratteri speciali e le
cose piu'
comuni come ad esempio il, lo, per, con ecc e i segni di
punteggiatura. Ho
provato ad eliminare i segni di punteggiatura con il metodo slice, ma il
problema è che mi elimina solo la prima occorrenza nella strings, e se
ce ne
sono altre non le considera.

@content.each { |a| a.slice!(/['.,<>()-?:\/"]/)}

Come posso fare?Invece per le parole che metodi potrei usare?sempre
slice?

Grazie per l'aiuto e buona giornata! :)
Davide
7ec76fde95878f95d7ae2e23cd99533e?d=identicon&s=25 Carlo Pecchia (cpecchia)
on 2009-03-18 10:57
(Received via mailing list)
Per *eliminare* caratteri (o serie di caratteri) puoi utilizzare
String#tr


Il 18 marzo 2009 10.54, Davide Monfrecola
<davide.monfrecola@gmail.com> ha scritto:
> @content = @buffer.split(" ")
> @content.each { |a| a.slice!(/['.,<>()-?:\/"]/)}
>
--
Carlo Pecchia
email: c.pecchia@gmail.com
twitter: @carlopecchia
Afb380f6c9adae5d99b582a4a36b1484?d=identicon&s=25 Davide Monfrecola (Guest)
on 2009-03-18 11:07
(Received via mailing list)
On 18/mar/09, at 10:56, Carlo Pecchia wrote:

> Per *eliminare* caratteri (o serie di caratteri) puoi utilizzare
> String#tr

Grazie mille! l'avevo già provato, ma l'avevo provato male! :) Ora
sono riuscito a fargli fare quello che volevo! :)
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-03-18 11:13
(Received via mailing list)
Il 18 marzo 2009 10.54, Davide Monfrecola
<davide.monfrecola@gmail.com> ha scritto:
> Dopodichè formo un array con tutte le parole contenute in @buffer
> usando split
>
> @content = @buffer.split(" ")
>
> A questo punto, a me serve eliminare tutti i caratteri speciali e le
> cose piu' comuni come ad esempio il, lo, per, con ecc e i segni di
> punteggiatura.

che ne dici di:

@content = @buffer.split /\W+/

così hai un arrai contenente solo parole, e la punteggiatura l'hai già
eliminata...

pietro
Afb380f6c9adae5d99b582a4a36b1484?d=identicon&s=25 Davide Monfrecola (Guest)
on 2009-03-18 11:23
(Received via mailing list)
On 18/mar/09, at 11:12, Pietro Giorgianni wrote:

> che ne dici di:
>
> @content = @buffer.split /\W+/
>
> così hai un arrai contenente solo parole, e la punteggiatura l'hai già
> eliminata...
>
> pietro

Penso sia un'ottima idea! Grazie!

Davide
598fadf49a8e63645edfb36cba7dc1c9?d=identicon&s=25 Luigi Maresca (luigi-s-w-net)
on 2009-03-18 12:11
Domanda:
perché non usare un gsub?
ci sono differenze?


Grazie

Luigi
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-03-18 12:36
(Received via mailing list)
Il 18 marzo 2009 12.11, Luigi Maresca <marluigi@libero.it> ha scritto:
> Domanda:
> perché non usare un gsub?
> ci sono differenze?

da quello che ha scritto davide, sembra di capire che a lui serve
proprio avere le singole parole, non la stringa intera...
Afb380f6c9adae5d99b582a4a36b1484?d=identicon&s=25 Davide Monfrecola (Guest)
on 2009-03-18 13:03
(Received via mailing list)
On 18/mar/09, at 12:35, Pietro Giorgianni wrote:

> da quello che ha scritto davide, sembra di capire che a lui serve
> proprio avere le singole parole, non la stringa intera...

Esatto, mi serve avere un array con tutte le parole perchè poi devo
calcolare l'hash di ogni singola parola.
598fadf49a8e63645edfb36cba7dc1c9?d=identicon&s=25 Luigi Maresca (luigi-s-w-net)
on 2009-03-18 13:58
Si si d'accordo, intendevo un
gsub(/ #{word_da_eliminare} /," ").split

Non intendevo proporre un metodo alternativo a quello da voi proposto ma
volevo solo capire le differenze tra il gsub (che, se non si è capito,
uso io) e il @buffer.split /\W+/


Grazie mille
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-03-18 14:46
(Received via mailing list)
Il 18 marzo 2009 13.58, Luigi Maresca <marluigi@libero.it> ha scritto:
> gsub(/ #{word_da_eliminare} /," ").split

@buffer.split /\W+/

è equivalente a

@buffer.gsub(/\W+/, ' ').split

però trovo il primo più leggibile.
This topic is locked and can not be replied to.