2012-01-20 14 views
6

Estoy tratando de realizar una función Substring en un nombre de archivo de imagen. El formato de nombre está en "images.png".Subcadena en vb

He intentado usar Substring solo me permite indicar el primer caracter hasta el caracter "n" para realizar la funcion.

Tal que SubString(1,6).

Pero lo que quiero es obtener cualquier personaje antes del ..

Por ejemplo "images.png ":

Después de la función que debería obtener Substring" imágenes".

Respuesta

8

Usted puede usar LastIndexOf junto con Substring:

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

Aunque la clase Path tiene un método que va a hacer esto de una manera inflexible, si el pasado en el camino tiene o no los directorios:

Path.GetFileNameWithoutExtension("images.png") 
3

En general para tales manipulaciones de cadena que puede utilizar:

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

Pero específicamente para conseguir un nombre de archivo sin extensión, lo mejor es utilizar este método:

System.IO.Path.GetFileNameWithoutExtension

+1

que tendrá un problema si el nombre de archivo contiene más de un "" personaje. –

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

¿Cómo sobre el uso de la clase Path.

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

Me ganaste. :) Soy un proponente ** ENORME ** de usar siempre la clase apropiada para el trabajo, y no tratar de reinventar lo que ya existe. VB6 tiene una propiedad en su FileSystemObject llamada "Título" que haría esta función. De hecho, uso lo anterior como un método de extensión llamado "TITLE" en la clase FileInfo de .NET porque soy una criatura de hábito. Función Título (ByVal fi Como System.IO.FileInfo) Volver System.IO.Path.GetFileNameWithoutExtension (fi.FullName) End Function –