Estrarre valori numerici da textBOx

mercoledì 18 marzo 2009 - 11.09

maltra Profilo | Newbie

Salve a tutti , la domanda è molto banale ma mi perdo in un bicchier d'acqua:
Ho una textbox che puo' aver al suo interno numeri stringhe lettere es: " ciao, come va? oggi ho comprato €40 di pane e euro 30.40 di pesce e tre alici al prezzo di 12 €.

Volevo fare una funzione che mi estraesse i valori numerici 40,30.40,12 e me li sommasse.
Questa mi restituisce solo le cifre numeriche 4,0,3,0 ecc...

string number = textBox1.Text.Trim();
for (int i = 0; i < number.Length; i++)
{
if (char.IsNumber(number[i]))
{
MessageBox.Show((number[i]).ToString());

}
}

Ho risolto cosi:

Regex re = new Regex(@"\d+");

foreach (var item in re.Matches(textBox1.Text))
{
item.ToString();

}
Che ne ditE?
Grazie A tutti
http://blogs.dotnethell.it/maltra/

Gianni77 Profilo | Junior Member

Non so usare le espressioni regolari... dal basso della mia ignoranza io lì farei uno split usando lo spazio come carattere, eliminando i simboli di valuta, dopodichè controllerei uno ad uno gli elementi dell'array per verificare se sono numerici o meno

aiedail92 Profilo | Expert

Ciao

La regular expression la puoi migliorare così:

@"[-+]?\b[0-9]*\.?[0-9]+\b"

In questo modo prendi i numeri anche col separatore decimale ( . ) con o senza segno, non in mezzo ad altre parole (tipo r00t)

Luca

maltra Profilo | Newbie

Ciao, non mi funziona una cosa.. vorrei prelevare i numeri ma che non siano "vicini" da lettere es se è "Ok oggi 5" il 5 lo prendo, se è "[5] ciao" il 5 vorrei che nn fosse conteggiato, come faccio per migliorarla?
Grazie

aiedail92 Profilo | Expert

In questo modo:

@"(?<=\s|^)[-+]?[0-9]*\.?[0-9]+(?=\s|$)"

Fa come dici tu, quindi prende solo i numeri delimitati da spazi (o che si trovano ad inizio e fine riga), ad esempio non prende [5], ma nemmeno "5"

Luca

maltra Profilo | Newbie

Ok grazieee

aiedail92 Profilo | Expert

>Ok grazieee

Figurati

Se hai risolto, accetta una risposta; se poi hai bisogno di ulteriori miglioramenti, puoi comunque continuare a chiedere su questo thread

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5