begin process at 2010 02 09 19:25:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > ASP.NET - PETITE FONCTION DE TEST D'UN ENTIER

ASP.NET - PETITE FONCTION DE TEST D'UN ENTIER


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Niveau :Débutant Date de création :12/03/2004 Vu :9 306

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Il est très utile de pouvoir tester si une chaine de caractère peut être convertit en Integer avant de faire un Ctype (où on doit alors gérer le cas d'erreur).

J'ai donc récupéré une Expression régulière sur le site :
- http://regexlib.com

Et réadapté à mon besoin, puis intégré dans une fonction que je peux appeler simplement (la fonction renvoie un booleen).

Source

  • ' -----------------------------------------------------
  • Public Shared Function IsInteger(ByVal strTmp As String) As Boolean
  • Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[0-9]+[0-9]*$")
  • Return objIntPattern.IsMatch(strTmp)
  • End Function
  • '-------------------------------------------------------------
  • 'On l'appelle donc simplement comme ceci :
  • If IsInteger(MaVariableString) Then
  • Response.Write "C'est un entier"
  • Else
  • Response.Write "Ce n'est pas un entier"
  • End If

' -----------------------------------------------------
Public Shared Function IsInteger(ByVal strTmp As String) As Boolean
 Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[0-9]+[0-9]*$")
 Return objIntPattern.IsMatch(strTmp)
End Function

'-------------------------------------------------------------

'On l'appelle donc simplement comme ceci :

If IsInteger(MaVariableString) Then
 Response.Write "C'est un entier"
Else
 Response.Write "Ce n'est pas un entier"
End If

 Conclusion

Pensez à consulter très régulièrement le site précité, il est plutot bien fait et de nombreuses RegExp peuvent vous sauver de bien des tests.

Bon coding

F___


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CUSTOM DATEPIKER DÉRIVANT DE COMPOSITECONTROL par fredzool
Source avec Zip UN MODULE POUR APPRENDRE SQL par Elmarzougui
Source avec Zip Source .NET (Dotnet) BOUTON QUI EMPECHE LE MULTI CLIC AVANT LA FIN DU TRAITEMENT.... par fredzool
Source avec Zip Source .NET (Dotnet) BOUTON AVEC CSS ET USERCONTROL WITH EVENT par fredzool
Source avec Zip Source .NET (Dotnet) CAPTCHA ASP.NET ET JAVASCRIPT par vaan3713

Commentaires et avis

Commentaire de jesusonline le 14/03/2004 14:18:39 administrateur CS

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é

Commentaire de PatriceVB le 02/04/2004 20:34:46 administrateur CS

euh...
c pas pareil que ça ?

dim truc as string
if isnumeric(truc) then
      'c du numerique
else
      ' c pas du numerique
end if

Commentaire de jesusonline le 02/04/2004 21:02:44 administrateur CS

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é ...

Commentaire de Domilo le 03/05/2004 09:43:22

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.

Commentaire de Doombilbo le 11/05/2004 11:51:18

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 :)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales