2012-01-20 17 views
6

Sto tentando di eseguire una funzione Substring su un nome file immagine. Il formato del nome è "images.png".Sottostringa in vb

Ho provato a utilizzare Substring mi consente solo di indicare il primo carattere fino al carattere "n" per eseguire la funzione.

Tale che SubString(1,6).

Ma quello che voglio è ottenere qualsiasi carattere prima dello ..

Per esempio "images.png ":

Dopo la funzione Substring dovrei ottenere" immagini".

risposta

8

È possibile utilizzare LastIndexOf in combinazione con Substring:

myString.Substring(0, myString.LastIndexOf('.')) 

Anche se la classe Path ha un metodo che farà questo in un modo fortemente tipizzato, se il passato nel percorso ha le directory o no:

Path.GetFileNameWithoutExtension("images.png") 
3

In generale per tali manipolazioni di stringhe è possibile utilizzare:

mystring.Split("."c)(0) 

Ma appositamente per ottenere un nome di file senza estensione, è meglio utilizzare questo metodo:

System.IO.Path.GetFileNameWithoutExtension

+1

che avrà un problema se il nome del file contiene più di un "" carattere. –

2
string s = "images.png"; 
Console.WriteLine(s.Substring(0, s.IndexOf("."))); 
5

ne dite di usare la classe Path.

Path.GetFileNameWithoutExtension("filename.png"); 
+0

Mi hai battuto su di esso. :) Sono un sostenitore di ** ENORME ** che usa sempre la classe appropriata per il lavoro e non cerca di reinventare ciò che già esiste. VB6 ha una proprietà sul suo FileSystemObject chiamata "Titolo" che farebbe questa funzione. In realtà utilizzo il metodo sopra descritto come un metodo di estensione chiamato "TITLE" sulla classe FileInfo di .NET perché sono una creatura abitudinaria. Funzione Titolo (ByVal fi Come System.IO.FileInfo) ritorno System.IO.Path.GetFileNameWithoutExtension (fi.FullName) End Function –