如何在C#中从文件路径获取子字符串?

5

我有一个字符串 path = c:\inetpub\wwwrroot\images\pdf\admission.pdf

我正在使用这个

path = path.LastIndexOf("\\").ToString();
path = path.Substring(path.LastIndexOf("/") + 1);

i want to get:

c:\inetpub\wwwrroot\images\pdf
c:\inetpub\wwwrroot\images\pdf\admission.pdf

现在我想从这个 string path 获取 admission.pdf 文件,我该如何做?


5
你仍应该使用 IO.Path 函数之一。手动使用 String.Substring 很容易出问题。 - Cody Gray
4个回答

12
string path = "c:\\inetpub\\wwwrroot\\images\\pdf\\admission.pdf";

string folder = path.Substring(0,path.LastIndexOf(("\\")));
                // this should be "c:\inetpub\wwwrroot\images\pdf"

var fileName = path.Substring(path.LastIndexOf(("\\"))+1);
                // this should be admin.pdf

@safi:没有,你应该听取得票最高的答案。 - Timwi
1
@Timwi,原帖中明确要求使用Substring解决问题,这就是我在评论中发布Substring答案的原因。也许他有充分的理由。感谢你的负评。 - Bala R
请不要假设每个发表负面评论的人也一定给你点了踩。 - Timwi

7

System.IO.Path类中有许多辅助方法可以从字符串中提取路径/文件名的部分。

在这种情况下,System.IO.Path.GetFileName将为您获取所需内容。


是的,但我想使用子字符串方法,而不是文件路径对象 :) - safi
为什么呢?使用这种方法可以让你获取文件名,而无需自己处理子字符串和计算字符串位置。 - Sean Carpenter
因为我将进一步使用此字符串来重命名文件,所以有时它可能是一个文件夹名称。 - safi
@safi:无论如何,您都应该使用Path.GetFileName。它也适用于目录名称。 - Timwi

4

为什么使用 Substring?

使用

System.Io.Path.GetDirectoryName(full_filepath)

获取文件夹名称,以及

System.Io.Path.GetFileName(full_filepath)

仅针对文件进行操作。

2
System.Io.Path.GetFileName(path);

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