Expressions régulières

Résolu/Fermé
Utilisateur anonyme - Modifié par MicDundee le 30/10/2015 à 17:42
 Utilisateur anonyme - 31 oct. 2015 à 16:08
Salut ! Mon affaire ne marche pas. Je voudrais ne récupérer que les chiffres et le point d'une valeur. Voici mon code en VB 2008 :

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As Double
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
ExpRegPrix = System.Text.RegularExpressions.Regex.IsMatch(Tmp, "[^0-9.]")
End Function

Et dans un Sub :
Dim Prix As Double
Prix = ExpRegPrix("0.25 ¤")
Form1.TSStatusLabelTotal.Text = Format(Prix, "0.00 ¤")

Le résultat donne : 0,00 ¤ mais Prix = -1

Le symbole monétaire ¤ peut changer donc je cherche une expression régulière qui me retourne que les chiffres et le point.
Merci

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 oct. 2015 à 17:53
Bonjour

ci dessous le pattern utilisé en vba:
"(\d?\d?\d)|(,)"

peut-^tre que....
0
Utilisateur anonyme
30 oct. 2015 à 18:02
Pas du tout ! J'ai finalement trouvé.

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As String
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
Dim regex As System.Text.RegularExpressions.Regex = New Regex("\d+\.\d+")
Dim match As Match = regex.Match(Tmp)
ExpRegPrix = match.Value
End Function
0
Utilisateur anonyme
30 oct. 2015 à 18:09
Pour faire plus simple :
Déclarer :
Imports System.Text.RegularExpressions

Public Function ExpRegPrix(ByVal PrixAConvertir As String) As String
'Récupère que les chifrres est le point
Dim Tmp As String = PrixAConvertir.Replace(",", ".")
Dim Resultat As Match = Regex.Match(Tmp, "\d+\.\d+")
ExpRegPrix = Resultat.Value
End Function
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 oct. 2015 à 18:17
Très sympa, le "pas du tout !"

MERCI
0
Désolé mais vous n'avez pas testé avant parce cela ne donnait pas de résultat. De plus, vous aviez mis la virgule alors que je l'avais remplacé par le point.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Utilisateur anonyme
Modifié par michel_m le 30/10/2015 à 18:31
Désolé, mais j'avais bien précisé "en vba" et effectivement oublier de remplacer une virgule par un point est rédhibitoire
je ne vous importunerez plus ; je ne suis pas comme vous un génie méconnu qui ne lit pas et est particulièrement impoli

en Blacklist
0
Voilà la réponse :
Imports System.Text.RegularExpressions

Module ModuleExpReg
Public Function DigitPointDigit(ByVal Convertir As String) As Double
'Récupère que les chifrres et le point
Dim Tmp As String = Convertir.Replace(",", ".")
Dim Resultat As Match = Regex.Match(Tmp, "(\d+\.\d+|\.\d+|\d+\.|\d+)")
Return Val(Resultat.Value)
End Function
End Module

C'est un module avec toutes les possibilités :
0.12
.12
3
3.
Etc.
0