Reconnaitre par une regex si ma chaine de caractère commence par 2 numéros

Résolu
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- 7 févr. 2006 à 21:40
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- 8 févr. 2006 à 14:48
Bonjour, je souhaiterais faire une regex pour reconnaitre si ma chaine de caractère commence par 2 numéros suivi d'un "_" et si c'est le cas supprimer ce bout de chaine. J'écris donc :


string pattern = string.Format(@"(\d{2}_)(.*)");



Regex Myregex =
new
Regex(pattern,
RegexOptions.Singleline);


MyStr = Myregex.Replace(MyFileInfoName,
"$2");



J'obtiens le message d'erreur suivant :

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Qulqu'un peut-il me dire ou se trouve l'erreur ?

Merci d'avance.


Mathmax
A voir également:

6 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
7 févr. 2006 à 22:05
Salut,
De là : string pattern string.Format(@"(\d{2}_)(.*)");> string pattern = @"(\d{2}_)(.*)";

/*
coq
MVP Visual C#
*/
3
Le_proprio_de_mykeyes
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006

8 févr. 2006 à 03:34
Selon ce que je vois .NET trouve que "|" est une erreur dans un fichier donc il envoie une erreur.

Une option serait donc de vérifier dans foreach() si chaque fichier est valide.

if (MyFile.Name.IndexOf(".gif") != -1 || MyFile.Name.IndexOf(".jpg") != -1){ //Fichier valide

}

C'est tout ce que je peux te donner
3
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
8 févr. 2006 à 10:18
Si mes souvenirs sont bons le filtre ne peut spécifier qu'un seul format à la fois.
Sic'est le cas il te suffit de faire une requête de liste pour chaque extension et d'assembler les 2 sorties.

/*
coq
MVP Visual C#
*/
3
cs_poppyto
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

7 févr. 2006 à 22:37
>mathmax

Les accolades sont interprétées dans string.Format comme le (n-1)ième élement dans la liste des arguments.

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

7 févr. 2006 à 22:41
Ok merci ça marche. Juste une autre question, qui concerne toujours les regex. En fait le but de mon programme est de modifier des noms de fichiers, mais seulement les fichiers .jpg et .gif.

Je commence donc par faire la liste de mes fichiers à modifier :


DirectoryInfo MyFolder =
new
DirectoryInfo(
"C:\\Inetpub\\wwwroot1\\image\\OrkosNews");



FileInfo[] MyFileInfoList = MyFolder.GetFiles(
@"(.*.)(jpg|gif)");





puis j'applique l'algorithme précédent dans une boucle :





foreach (
FileInfo MyFileInfo
in MyFileInfoList){}

J'obtiens l'erreur suivnte sur ma regex @"(.*.)(jpg|gif)" (qui signifie tous les fichier avec extension .gif ou .jpg) :
Illegal characters in path.

Sais-tu pourquoi ?


Mathmax
0
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

8 févr. 2006 à 14:48
Ok merci pour vos réponses.


Mathmax
0