Asp.net - petite fonction de test d'un entier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 119 fois - Téléchargée 25 fois

Contenu du snippet

Aucune description n'est fournie pour ce projet

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
mercredi 28 novembre 2001
Statut
Membre
Dernière intervention
1 février 2008

thx Fabrice c une bonne mise en jambe des expressions régulières.
en + c vraiment utile pour convertir des variables de querystring etc.
bon boulot :)
Messages postés
32
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
22 février 2005

Bonjour,

IsNumeric est pas mal, mais ne dira pas si le nombre est de type entier. Donc à l'affectation à la variable entier, un arrondi sera fait "à l'insu de ton plein grès" ! (ce qui pourrait-être génant)

^[0-9]+[0-9]*$ permet de reconnaitre les entiers POSITIFS, et peut, je croie, être simplifié en ^[0-9]+$

Si vous voulez repérer les positifs et NEGATIFS il me semble que feront l'affiare :
- ^-?[0-9]+$
- ^[-+]?[0-9]+$ (si le positif peut être précédé d'un plus "+")

Si vous voulez repérer un nombre positif à 5 digits au maximum (< 100 000)
^[0-9]{1,5}$

Je vous conseil le logiciel Expresso (gratuit) pour pouvoir maitriser les RegEx...

A+
Dom.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
25
Si c'est vrai :p

Mais moi ce qu'il m'a plus c'est l'utilisation des RegExp, je me suis servis de ce code dans une classe que j'ai nommé validation, qui me permet de tester si c'est un integer un decimal mais aussi une adresse mail ...

Je vais peut etre la mettre ce soir mais je l'ai pas encore commenté ...
Messages postés
562
Date d'inscription
dimanche 16 décembre 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
1
euh...
c pas pareil que ça ?

dim truc as string
if isnumeric(truc) then
'c du numerique
else
' c pas du numerique
end if
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
25
Pas mal mais un peu trop general, les integer sont compris entre -2^31 et 2^31 -1, or tu ne geres pas les depassements de capacité ni les négatifs donc voici une source qui gere les integers

Public Function isInteger(ByVal _Value As String) As Boolean
Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[-]?0*\d{1,10}$")
If objIntPattern.IsMatch(_Value) = True Then
If CType(_Value, Decimal) <= 2 ^ 31 - 1 And CType(_Value, Decimal) >= 2 ^ 31 Then
Return objIntPattern.IsMatch(_Value)
End If
Else
Return False
End If

End Function

Le regexp accepte les nombres négatifs néglige les 0 qu'il y a devant le nombre et n'accepte pas plus de 10 chiffres car 2^31=2 147 483 648

J'ai comparé cette méthode avec celle ci :

Try
i = CInt(s)
Catch ex As Exception
'C'est pas un integer
End Try

Pour convertir une chaine en integer la premiere fonction est autour de 10% plus rapide mais peut etre optimisé en supprimant la conversion du nombre en decimal pour le comparer à 2^31 via les regexp mais ca ferait une chaine plutot tres compliqué

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.