RamBabuze
Messages postés3Date d'inscriptionvendredi 2 novembre 2007StatutMembreDernière intervention17 octobre 2009
-
17 oct. 2009 à 15:13
RamBabuze
Messages postés3Date d'inscriptionvendredi 2 novembre 2007StatutMembreDernière intervention17 octobre 2009
-
17 oct. 2009 à 22:06
Il est très facile de formater un nombre en passant par la méthode ToString. Par exemple, je peux facilement afficher un numéro de téléphone américain en exécutant le code suivant:
Dim nombre1 As Double = 5145551212
Dim fmt As String = "(###) ###-####"
Dim str As String = nombre1.ToString(fmt)
'str contiendra (514) 555-1212
Je suis intéressé à trouver un bout de code qui ferait le travail inverse, c'est-à-dire qu'il recevrait deux paramètres, à savoir une chaine de caractères formatée ainsi que le format utilisé. Ce code retournerait un nombre (voici comment l'appel serait fait):
Dim nombre2 As Double = ToNumber(str, fmt)
'nombre2 contiendrait la valeur 5145551212
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 17 oct. 2009 à 20:34
salut,
vois d'abord la piste de casy que je n'ai pas testée
sinon, pourquoi s'arrêter au masque? puisque seul le numérique t'importe
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim nombre1 As Double = 5145551212
Dim fmt As String = "(###) ###-####"
Dim str As String = nombre1.ToString(fmt)
'str contiendra (514) 555-1212
Dim nombre2 As Double = ToNumber(str)
'nombre2 contiendrait la valeur 5145551212
MessageBox.Show("'" & str & "' donne '" & nombre2.ToString & "'")
End Sub
Function ToNumber(ByVal sValue As String) As Double
Dim sRet As String = String.Empty
For i As Integer = 0 To sValue.Length - 1
If Char.IsDigit(sValue(i)) Then sRet &= sValue(i).ToString
Next i
If sRet.Length = 0 Then
Return 0
Else
Return Convert.ToDouble(sRet)
End If
End Function
RamBabuze
Messages postés3Date d'inscriptionvendredi 2 novembre 2007StatutMembreDernière intervention17 octobre 2009 17 oct. 2009 à 22:06
Humm... "la piste de casy", j'ignore de quoi vous parlez... J'aimerais simplement ne pas avoir à me soucier d'estimer la valeur numérique d'un champ, si je peux mettre la main sur le format (masque) qui a été utilisé. La méthode "ToString" accepte en paramètre un format, je voudrais pouvoir lui (ou à un tiers) passer son résultat et son format, de façon à recevoir ce qu'y a été passé comme valeur numérique. En d'autres mots, j'aimerais connaître ce que .ToString a bien pu traiter pour me retourner une chaine de caractères ainsi modifiée à l'aide du format (que je connais).