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

6 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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
Rejoignez-nous