Regex, um die Datei-Erweiterung
Habe ich eine Liste, die enthält Datei-Namen (ohne den vollständigen Pfadnamen)
List<string> list=new List<string>();
list.Add("File1.doc");
list.Add("File2.pdf");
list.Add("File3.xls");
foreach(var item in list) {
var val=item.Split('.');
var ext=val[1];
}
Möchte ich nicht verwenden String.Split
, wie bekomme ich die Endung der Datei mit regex?
- Warum nicht Weg.GetExtension? Regex ist overkill hier, wenn Sie nur die Erweiterung.
- um den richtigen ext var ext =val[1]; besser: var ext =val[val.Länge-1];, Sie Ihre aktuelle code hat eine bessere Leistung als regex oder jede andere Methode, wenn Sie beginnen mit einer Zeichenfolge.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu verwenden, regex für, die. Sie können
Weg.GetExtension
Methode.Hier ist ein
DEMO
.Könnten Sie
Weg.GetExtension()
.Beispiel (entfernt auch den Punkt):
Erhalten die Erweiterung mit regex:
Oder wenn Sie wollen, um sicherzustellen, gibt es einen Punkt:
Regex ist
Entgangen Zeitraum, 1 oder mehr alpha-numerische Zeichen Ende der Zeichenkette
Könnten Sie auch LastIndexOf(".")
Aber mit der eingebauten Funktion wird immer bequemer.
"\.[^\.]+" passt alles beginnt mit einem'. ' - Zeichen, gefolgt von 1 oder mehr nicht '. ' - Zeichen.
Übrigens die anderen haben Recht, regex ist overkill hier.
Zugunsten der Googler -
Ich zu tun hatte bizarre Dateinamen, z.B. FirstPart.SecondPart.xml mit der Erweiterung wird unbekannt.
In diesem Fall Weg.GetFileExtension() verwirrt durch die extra Punkte.
Die regex, die ich verwendet wurde
also Spiel die Letzte Instanz von 3 oder 4 Zeichen mit einem Punkt in front nur. Sie können es hier testen an Regexr. Nicht ein Preisträger, sondern hat den trick.
Der offensichtliche Fehler ist, dass wenn der zweite Teil waren 3-4 chars und die Datei hatte keine Endung, es wäre das aufzunehmen, aber ich wusste, das war nicht eine situation, in der ich begegnen würde.