在VB中的子字符串

6

我想在图片文件名上执行一个Substring函数。

文件名格式为"images.png"。

我尝试使用Substring,但它只允许我指定从第一个字符到第n个字符来执行函数。

例如SubString(1,6)

但我想要的是获取.前面的任何字符。

例如"images.png":

执行Substring函数后,我应该得到"images"。

5个回答

11
你可以结合使用 LastIndexOfSubstring
myString.Substring(0, myString.LastIndexOf('.'))

虽然 Path 类有一种强类型的方法可以执行此操作,但无论传入的路径是否包含目录:

Path.GetFileNameWithoutExtension("images.png")

6
使用 Path 类如何?
Path.GetFileNameWithoutExtension("filename.png");

1
你比我先做到了。 :) 我非常支持始终使用适当的类来完成工作,而不是试图重新发明已经存在的东西。VB6 的 FileSystemObject 上有一个名为“Title”的属性可以执行此功能。实际上,我将上述内容用作扩展方法,称为 .NET 的 FileInfo 类上的“TITLE”,因为我是个习惯性的人。<System.Runtime.CompilerServices.Extension()> Function Title(ByVal fi As System.IO.FileInfo) Return System.IO.Path.GetFileNameWithoutExtension(fi.FullName) End Function - Wesley Long

3

一般情况下,您可以使用以下方法进行字符串操作:

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

但是如果想要获取没有扩展名的文件名,最好使用这种方法:

System.IO.Path.GetFileNameWithoutExtension


1
如果文件名包含多个“.”字符,则会出现问题。 - Wesley Long

3

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接