2010-10-06 8 views
1

ce code fonctionnait bien jusqu'à ce matin, quelqu'un peut-il repérer mon erreur? probablement vraiment bête mais ça m'a perplexe! J'utilise un formulaire pour soumettre un fichier (nom de fichier 'fileUpEx'), puis j'ai écrit une classe pour le télécharger (comme je l'ai dit, cela fonctionne depuis des siècles) .... (si j'écris ' filepath 'à la page c'est' Test copy.pdf ') Ma classe retourne' no groups '!!! Très étrange, quelqu'un peut-il aider s'il vous plaît?Téléchargement de fichiers C#: aucun groupe de reg ex?

string filepath = fileUpEx.PostedFile.FileName; 
string pat = @"\\(?:.+)\\(.+)\.(.+)"; 
Regex r = new Regex(pat); 
Match m = r.Match(filepath); 
if (m.Groups[0].Captures.Count != 0) 
{ 
    //blaa blaa blaa 
} 
else 
{ 
    return "no Groups"; 
} 

Merci à l'avance, Vauneen

+0

La chaîne ' « Test copy.pdf »' sera bien sûr pas correspondre votre regex ... S'il vous plaît 'Console.WriteLine (filepath)' pour voir son contenu réel. – kennytm

+0

Prenez soin d'expliquer la regex - vous semblez attendre un nom de fichier UNC?! Qu'est-ce que 'fileUpEx.PostedFile.FileName' quand cela échoue? – AndiDog

Répondre

0

Votre expression régulière exige que le chemin du fichier contient une barre oblique inverse dont il ne fonctionne pas. Vous pourriez peut-être faire partie en option, par exemple:

@"(?:\\.+\\)?(.+)\.(.+)" 

Sinon, vous pouvez utiliser les méthodes disponibles dans System.IO.Path:

string extension = Path.GetExtension(filePath); 
string filename = Path.GetFilenameWithoutExtension(filePath); 
+0

Cela a fonctionné parfaitement! Merci Millions Mark! – Vauneen