2012-06-27 17 views
5

Ho bisogno di tagliare una sottostringa da una stringa, se questa sottostringa esiste.Taglia caratteri da una stringa

In particolare, se la stringa è "MainGUI.exe", quindi ho bisogno di diventare "MainGUI", tagliando ".exe" dalla stringa.

ho provato questo:

 String line = "MainGUI.exe"; 
    char[] exe = {'e', 'x', 'e', '.'}; 
    line.TrimEnd(exe); 

Questo mi dà la risposta corretta per "MainGui.exe", ma per qualcosa come "MainGUIe.exe" non funziona, dandomi "MainGUI" invece di "MainGUIe".

Sto usando C#. Grazie per l'aiuto!

risposta

15

Utilizzare la classe statica Path nello spazio dei nomi System.IO, che consente di rimuovere facilmente estensioni e directory dai nomi dei file. Puoi anche usarlo per ottenere l'estensione, il percorso completo, ecc. È una classe molto utile e vale la pena esaminarla.

var filename = Path.GetFileNameWithoutExtension(line); 

Ti dà "MainGui", questo è, naturalmente, supponendo che si vuole tagliare qualsiasi estensione di file o se si sa il file sta andando sempre essere un file .exe, se si vuole tagliare solo le estensioni off di file .exe, tuttavia, e lasciarlo su altri. È possibile eseguire prima il test, utilizzando String.EndsWith() o utilizzando il metodo Path.GetExtension().

+0

Questo ha funzionato, grazie a tutti per avermi aiutato! – nat

13

Vorrei usare Path.GetFileNameWithoutExtension invece di manipolare la stringa per gestirlo.

string line = “MainGUI.exe”; 
string fileWithoutExtension = Path.GetFileNameWithoutExtension(line); 

Se si desidera solo per togliere l'estensione se è .exe, è possibile verificare la presenza di quello. Quanto segue soltanto striscia off estensioni di .exe, ma lasciare tutte le altre estensioni intatta:

string ext = Path.GetExtension(line).ToLower(); 
string fileWithoutExtension = ext == ".exe" 
           ? Path.GetFileNameWithoutExtension(line) 
           : line; 
+0

Si noti che questo eliminerà tutte le estensioni di file, non solo .exe. Potrebbe essere o non essere quello che vuoi. – Servy

+0

@Servy La modifica dovrebbe gestire quel caso, ora, anche ... –

3

Se si taglia sempre ".exe", è possibile tagliare gli ultimi 4 caratteri indipendentemente dal resto della stringa.

line.Substring(0, line.Length - ".exe".Length); 
3
string line = "MainGUI.exe"; 
if (line.EndsWith(".exe")) 
    line = line.Substring(0, line.Length - 4); 
0

Come alcuna estensione di file ha un punto al suo interno, si è sicuri di utilizzare questo (.):

String line = "MainGUI.exe"; 
line = line.Substring(0, line.LastIndexOf('.')); 
Problemi correlati