In una stringa voglio estrare il testo tra 2 separatori

Ciao.
Io ho la seguente stringa presa da un file:

Articolo#1=Ciupa

Come faccio ad estrare il numero tra # e =, tenendo presente che può
essere un numero con più cifre.
Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi
confermate questa cosa?
Ciao.
KioSirio

si la regex la cosa migliore :wink:

prova a giocherellare su questo sito: http://rubular.com

un pannello web per provare le tue regex

ciao,
A.

Il 01/12/2010 17:06, Ivan M. ha scritto:

KioSirio


http://twitter.com/apeacox

2010/12/1 Ivan M. [email protected]:

Ciao.
Io ho la seguente stringa presa da un file:

Articolo#1=Ciupa

Come faccio ad estrare il numero tra # e =, tenendo presente che pu
essere un numero con pi cifre.
Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi
confermate questa cosa?

Puoi anche fare

“Articolo#1=Ciupa”[9…-1].to_i

che probabilmente e’ piu’ veloce della regexp, ma e’ una zozzeria che
mi vergogno di avere pensato!

Se sei piuttosto sicuro che quello che c’e’ prima del # sia sempre e
solo lettere, la regexp e’ molto semplice: (\d+), altrimenti solo
marginalmente piu’ complessa #(\d+).

Ciao

2010/12/1 Ivan M. [email protected]:

confermate questa cosa?
marginalmente piu’ complessa #(\d+).

Ciao

Prima del # e dopo l’= ci pu essere qualsiasi cosa, io sono per sicuro
che tra le 2 cose ci sono solo numeri (composti da 1 o pi cifre).

ad essere molto precisi potresti matchare

“Qualcosa#1=any”.match(/#(\d+)=/)[1]
=> “1”

… ma il problema delle regexp e’ che non si finisce mai di essere
precisi! ad esempio questa regexp verrebbe ingannata da

“Qua#2=lcosa#1=any”.match(/#(\d+)=/)[1]
=> “2”

dandoti un valore sbagliato invece di un sonoro errore…

che intendi per “qualsiasi cosa”?

Luca De Marinis wrote in post #965429:

2010/12/1 Ivan M. [email protected]:

Ciao.
Io ho la seguente stringa presa da un file:

Articolo#1=Ciupa

Come faccio ad estrare il numero tra # e =, tenendo presente che pu
essere un numero con pi cifre.
Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi
confermate questa cosa?

Puoi anche fare

“Articolo#1=Ciupa”[9…-1].to_i

che probabilmente e’ piu’ veloce della regexp, ma e’ una zozzeria che
mi vergogno di avere pensato!

Se sei piuttosto sicuro che quello che c’e’ prima del # sia sempre e
solo lettere, la regexp e’ molto semplice: (\d+), altrimenti solo
marginalmente piu’ complessa #(\d+).

Ciao

Prima del # e dopo l’= ci può essere qualsiasi cosa, io sono però sicuro
che tra le 2 cose ci sono solo numeri (composti da 1 o più cifre).
Ciao.
KioSirio