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

Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Dernière intervention
31 août 2008
- - Dernière réponse : cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
Salut,
De là : string pattern string.Format(@"(\d{2}_)(.*)");> string pattern = @"(\d{2}_)(.*)";

/*
coq
MVP Visual C#
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Dernière intervention
16 avril 2006
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
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#
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
541
Date d'inscription
dimanche 29 décembre 2002
Dernière intervention
13 mai 2011
0
Merci
>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#
Commenter la réponse de cs_poppyto
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Dernière intervention
31 août 2008
0
Merci
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
Commenter la réponse de cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Dernière intervention
31 août 2008
0
Merci
Ok merci pour vos réponses.


Mathmax
Commenter la réponse de cs_mathmax

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.