Bonjour,
Je voudrais séparer entre la partie numérique et la partie alphanumérique d'une chaine de caractère:
Par Ex: MaChaine="Ma_société658148"
je voudrais passer Ma_société dans une variable et 658148 dans une autre.
Merci de m'aider.
Bonjour,
Je voudrais séparer entre la partie numérique et la partie alphanumérique d'une chaine de caractère:
Par Ex: MaChaine="Ma_société658148"
je voudrais passer Ma_société dans une variable et 658148 dans une autre.
Merci de m'aider.
Il va falloir faire un traitement de ta chaine caractère par caractère je pense...ou utiliser des regex.
Merci pour la réponse,
Je crois que le Regex est utilisable lorsque on aura un séparateur.. mais la j'en ais pas.![]()
Salut, Regex est fait pour toi, non pas besoin de véritable séparateur : "(?<alpha>[a-zA-Z_]+)(?<num>[\d]+)"
En voila une toute simple que tu peux adapter au besoin.
Edit : Un petit lien pour plus d'infos : http://msdn.microsoft.com/en-us/library/az24scfc.aspx
J'ai aussi corrigé ma regex parce qu'il me semblait de mémoire que \w c'était les lettres uniquement, mais non, c'est lettre + chiffres. Et de toute façon c'était faux car ton exemple contient un underscore à matcher aussi.
Bonjour,
juste une petite adaptation pour les caractères accentués (empruntée à stormimon) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part "(?<alpha>[\w-[0-9]]+)(?<num>[\d]+)"
Bonjour
Je suis débutant en VB.NET mais vétérant en VB6, et j'ai une solution (en VB.NET), si cela t'intéresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim MaChaine As String = "Ma_société658148" Dim Car As String Dim Lettres As String = "" Dim Chiffre As String = "" Dim I As Integer For I = 1 To MaChaine.Length Car = Mid(MaChaine, I, 1) If IsNumeric(Car) Then Chiffre += Car Else Lettres += Car End If Next MsgBox(Lettres & vbCrLf & Chiffre)
Solution quelque peu lourde alors qu'une regex telle que je l'ai donnée fait le boulot en une ligne.
On voit que tu viens du VB6... Les tableaux ça débute à 0, pas à 1, et il y a un indexeur sur la chaine, ce qui rend le mid() inutile.
Comme il y a aussi un enumérateur, il est aussi simple de faire un foreach plutot.
Mais dans tous les cas, le code est faux, si la chaine est "abc123def", tu obtiendra Lettres = "abcdef", or tu aurais du avoir "abc".
Partager