2012-01-20 13 views
6

Próbuję wykonać funkcję Substring na pliku obrazu. Format nazwy jest w "images.png".Podłoże w vb

Próbowałem używać Substring pozwala mi tylko wskazać pierwszy znak, aż do znaku "n", aby wykonać tę funkcję.

Taki, że SubString(1,6).

Ale chcę uzyskać dowolną postać przed ..

Na przykład "images.png ":

Po funkcji Substring powinien dostać" obrazów".

Odpowiedz

8

You może używać LastIndexOf w połączeniu z Substring:

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

Choć klasy Path ma metodę, która zrobi to w sposób zdecydowanie wpisywanych, czy przeszedł na ścieżce ma katalogów czy nie:

Path.GetFileNameWithoutExtension("images.png") 
3

Generalnie dla takich manipulacji ciąg można użyć:

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

Ale specjalnie dla coraz nazwę pliku bez rozszerzenia, to najlepiej skorzystać z tej metody:

System.IO.Path.GetFileNameWithoutExtension

+1

To będzie mieć problem, jeśli nazwa pliku zawiera więcej niż jeden "" postać. –

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

Jak o użyciu klasy Path.

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

Uderzyłeś mnie do tego. :) Jestem zwolennikiem ** OGROMNEGO ** zawsze stosowania odpowiedniej klasy do pracy, a nie próbowania odrodzenia tego, co już istnieje. VB6 ma właściwość w swoim obiekcie FileSystemObject o nazwie "Title", która wykonywałaby tę funkcję. Właściwie używam powyższego jako metody rozszerzania zwanej "TITLE" na klasie FileInfo .NET, ponieważ jestem istotą z przyzwyczajenia. Funkcja Tytuł (ByVal fi Jako System.IO.FileInfo) Powrót System.IO.Path.GetFileNameWithoutExtension (fi.FullName) Function End –