Wenn ich einen String habe "abc.txt"
, der sagt , gibt es eine schnelle Möglichkeit, einen Teilstring zu erhalten, der gerecht ist "abc"
?
Ich kann keine machen, fileName.IndexOf('.')
weil der Dateiname sein könnte "abc.123.txt"
oder so und ich möchte natürlich nur die Erweiterung (dh "abc.123"
) loswerden .
Zu diesem Zweck gibt es im Framework eine Methode, die den vollständigen Pfad bis auf die Erweiterung beibehält.
Wenn nur der Dateiname benötigt wird, verwenden Sie
quelle
null
hat hier einen magischen Wert. Wenn SieString.Empty
aka verwenden""
, bleibt ein nachfolgender [.
] Punkt übrig .GetFileNameWithoutExtension
ist expliziter. Obwohl es schön ist, über seine möglicherweise unerwünschten Nebenwirkungen und die Existenz einer Alternative zu Bescheid zu wissen.Sie können verwenden
Und dann entfernen Sie die Erweiterung manuell:
quelle
String.LastIndexOf würde funktionieren.
quelle
foo/bar.cat/cheese
!String.LastIndexOf
ist gefährlich, um so etwas zu erreichen. Bei Dateien ohne Erweiterung, wie oben von @Cameron angegeben, entsprechen Ihre Ergebnisse möglicherweise nicht Ihren Wünschen. Der sicherste Weg, dies zu tun, ist die Verwendung der obigen AntwortWenn Sie einen vollständigen Pfad ohne Erweiterung erstellen möchten, können Sie Folgendes tun:
aber ich suche nach einem einfacheren Weg, das zu tun. Hat jemand eine Idee?
quelle
Ich habe den folgenden, weniger Code verwendet
Ausgabe wird sein
quelle
Path.Combine()
anstatt zu spezifizieren"\\"
.Wenn Sie die String-Operation verwenden möchten, können Sie die Funktion lastIndexOf () verwenden, die nach dem letzten Vorkommen eines Zeichens oder einer Teilzeichenfolge sucht. Java hat zahlreiche String-Funktionen.
quelle
Sie fragen vielleicht nicht die UWP-API. Aber in UWP
file.DisplayName
ist der Name ohne Erweiterungen. Hoffe nützlich für andere.quelle
Ich weiß, dass es eine alte Frage ist und
Path.GetFileNameWithoutExtension
eine bessere und vielleicht sauberere Option ist. Aber ich persönlich habe diese beiden Methoden zu meinem Projekt hinzugefügt und wollte sie teilen. Dies erfordert C # 8.0, da Bereiche und Indizes verwendet werden.quelle
quelle
quelle
Diese Implementierung sollte funktionieren.
quelle
abc.txt.pdf
? :-)