527 messaggi dal 18 dicembre 2012
Ciao a tutti
ho una stringa di questo tipo '99.99 euro + iva' e vorrei estrarre da quì solo la parte numrica.
Ho trovato questo:

resultString = Regex.Match(subjectString, @"\d+").Value;

Ma questo va bene per gli interi. Ho provato a cambiare in ^\\d{1,6}(\\.\\d{1,2})?$ ma restituisce sempre una stringa vuota.

Come posso fare?
Grazie mille
3.939 messaggi dal 28 gennaio 2003
se hai davvero una stringa di quel tipo, usare le espressioni regolari è abbastanza esagerato. Basta questo:
Dim s As String = "99.99 euro + iva"
Dim d As Double = CDbl(s.Substring(0, s.IndexOf(" "c)).Replace("."c, ","c))
Mi collego (e quoto) quanto dice pietro aggiungendo che nel tuo caso probabilmente non ti torna nulla perché hai inserito la tua espressione regolare in ^xxx$ che indicano l'inizio e la fine della regular expression. Prova quanto meno a togliere il dollaro per poi fare il resto delle prove. Ovviamente devi essere sicuro che non ci sia nulla da togliere prima del numero, altrimenti devi eliminare anche ^

Ormai programmano tutti... ma la professionalità appartiene a pochi
527 messaggi dal 18 dicembre 2012
Quello era solo un esempio. So solo che la stringa contiene un numero decimale o intero
3.939 messaggi dal 28 gennaio 2003
Svipla ha scritto:
Quello era solo un esempio. So solo che la stringa contiene un numero decimale o intero



 e io ho risposto secondo l'esempio fatto!

ciao
3.939 messaggi dal 28 gennaio 2003
certo non sono pratico di espressioni regolari.

Prova questa:

.*?([0123456789.]+).*?

data la stringa:
12.34 euro e iva al 52.3%

mi trova 12.34 e 52.3

salute
3.939 messaggi dal 28 gennaio 2003
il codice di sotto restituisce
gruppo(1) = '12.34' alla posizione 6
gruppo(1) = '52.3' alla posizione 28


Dim source As String = "costo 12.34 euro più iva al 52.3%"
Dim pattern As String = ".*?([0123456789.]+).*?"
Dim re As New Regex(pattern)
Dim mc As MatchCollection = re.Matches(source)

For Each m As Match In mc
  Dim gs As GroupCollection = m.Groups
  For i As Integer = 1 To gs.Count - 1
    Dim g As Group = gs(i)
    'Me.lbl1.Text &= "&nbsp;&nbsp;&nbsp;&nbsp;gruppo(" & i & ") = '" & g.Value & "' alla posizione " & g.Index & "<br>"
    PrintLn(Me.PlaceHolder1, "gruppo(" & i & ") = '" & g.Value & "' alla posizione " & g.Index)
  Next
Next
24 messaggi dal 19 ottobre 2010
prova ad usare questa Regex : ([0-9]+(\.|\,)[0-9]+|[0-9]+)


Prima espressione :
[0-9]+ --> numero
(\.|\,)--> punteggiatura in OR . oppure ,
[0-9]+ --> numero

Seconda espressione in or :
[0-9]+ --> numero



ho fatto il test su questo testo :


99
99.90
99,90

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.