Vérifier une chaîne de caractères

Le
news1
Bonjour,

Je cherche a tester qu'une chaine de caractères ne contiennes que des
chiffres.

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
news1
Le #650180
On 5 mar, 15:17, ""
Bonjour,

Je cherche a tester qu'une chaine de caractères ne contiennes que des
chiffres.

Merci d'avance


Je viens de trouver la réponse

if isnumeric(chaine) then

jbongran
Le #649920
wrote:
On 5 mar, 15:17, ""
Bonjour,

Je cherche a tester qu'une chaine de caractères ne contiennes que des
chiffres.

Merci d'avance


Je viens de trouver la réponse

if isnumeric(chaine) then


Pas si sûr IsNumeric(-1.25) retourne True (Vrai)
IsNumeric(1.0) retourne True (Vrai)
etc...
L'usage d'une expression régulière est peut être plus sûre (pas tout testé,
mais ça devrait faire l'affaire):

Function RegExpTest(patrn, strng)
Dim regEx ' Crée la variable.
Set regEx = New RegExp ' Crée l'expression régulière.
regEx.Pattern = patrn ' Définit les critères.
regEx.IgnoreCase = False ' Définit le respect de la casse.
RegExpTest = regEx.Test(CStr(strng)) ' Lance le test de recherche.
End Function

WScript.Echo("125 est numerique: " & RegExpTest("^d+$", 125))
WScript.Echo("1.25 est numerique: " & RegExpTest("^d+$", 1.25))
WScript.Echo("-125 est numerique: " & RegExpTest("^d+$", -125))


Michel Claveau
Le #649918
Bonjour !

En fait, ça peut être très compliqué.

Et, déjà, comment définir des chiffres ?

Par exemple, est-ce que chrw(8547) (chiffre romain 4) est considéré
comme un chiffre ?

Plus vicieux : chrw(&h248B)

Et l'infini ? chrw(&h221E)

etc.






--
@-salutations

Michel Claveau
Jacques Barathon [MS]
Le #649631
"Michel Claveau" news:
Bonjour !

En fait, ça peut être très compliqué.

Et, déjà, comment définir des chiffres ?


Chiffres, pas nombres. Chiffres = 0 .. 9, non? Ok, on suppose que vu
l'intitulé du problème de départ, on ne parle que des chiffres arabes.

La solution de jbongran basée sur une expression régulière me paraît être la
plus probante. En PowerShell (hé oui, ça faisait un bail) ça donnerait
simplement:

PS> $texte = "1024 pommes"
PS> $texte -match "^d+$"
False

PS> $texte = "1024"
PS> $texte -match "^d+$"
True

Jacques

Méta-MCI
Le #648480
Bonsoir !


Mais... chrw(&h248B) est aussi un chiffre arabe...

Met ça dans le fichier toto.vbs :
u=chrw(&h248B)
R=MsgBox(u, 0)

Et lance : wscript toto.vbs

Juste pour voir.


Ce que je voulais soulever, c'est le problème des chiffres unicode
non-Ascii.
Mais, bon, c'est plus de la provoc qu'un réel problème...


@+

Michel Claveau
Publicité
Poster une réponse
Anonyme