it-swarm.it

Rimuovi l'estensione del file da una stringa del nome del file

Se ho una stringa che dice "abc.txt", c'è un modo rapido per ottenere una sottostringa che sia solo "abc"?

Non riesco a fare un fileName.IndexOf('.') perché il nome del file potrebbe essere "abc.123.txt" o qualcosa del genere e ovviamente voglio semplicemente eliminare l'estensione (ad esempio "abc.123").

170
tweetypi

Il metodo Path.GetFileNameWithoutExtension ti dà il nome del file che passi come argomento senza l'estensione, come dovrebbe essere ovvio dal nome.

328

C'è un metodo nel framework per questo scopo, che manterrà il percorso completo tranne per l'estensione.

System.IO.Path.ChangeExtension(path, null);

Se è necessario solo il nome del file, utilizzare

System.IO.Path.GetFileNameWithoutExtension(path);
211
Ran QUAN

Puoi usare

string extension = System.IO.Path.GetExtension(filename);

E quindi rimuovere l'estensione manualmente:

string result = filename.Substring(0, filename.Length - extension.Length);
52
phdesign

String.LastIndexOf avrebbe funzionato.

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);
24
Andrew

Se vuoi creare un percorso completo senza estensione puoi fare qualcosa del genere:

Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))

ma sto cercando un modo più semplice per farlo. Qualcuno ha qualche idea?

11
Logman

Ho usato il codice sottostante, meno


string fileName = "C:\file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"\\"+Path.GetFileNameWithoutExtension(fileName));
   
3
Benjym

se si desidera utilizzare l'operazione String, è possibile utilizzare la funzione lastIndexOf () che ricerca l'ultima occorrenza di un carattere o sottostringa. Java ha numerose funzioni di stringa.

1
Shraddha

Forse non stai chiedendo l'API UWP. Ma in UWP, file.DisplayName è il nome senza estensioni. Spero utile per gli altri.

1
sudoer