34

所以,说我有

string path = "C:\\Program Files\\Program\\File.exe";

我如何只获得“File.exe”?我在想一些分裂的东西(见下文),但我试过的东西不起作用......

这是我的代码。

        List<string> procs = new List<string>(); //Used to check if designated process is already running
        foreach (Process prcs in Process.GetProcesses())
            procs.Add(prcs.ProcessName); //Add each process to the list
        foreach (string l in File.ReadAllLines("MultiStart.txt")) //Get list of processes (full path)
            if (!l.StartsWith("//")) //Check if it's commented out
                if (!procs.Contains(l.Split('\\')[l.Split('\\').Length - 1])) //Check if process is already running
                    Process.Start(l);

我可能只是一个菜鸟。._.

4

4 回答 4

104

System.IO有不同的类来处理文件和目录。在它们之间,最有用的一种是Path它有很多用于处理文件和文件夹的静态辅助方法:

Path.GetExtension(yourPath); // returns .exe
Path.GetFileNameWithoutExtension(yourPath); // returns File
Path.GetFileName(yourPath); // returns File.exe
Path.GetDirectoryName(yourPath); // returns C:\Program Files\Program
于 2012-10-22T00:26:35.317 回答
19

你正在寻找Path.GetFileName(string).

于 2012-10-22T00:20:31.333 回答
8

通过最后一个字符搜索,您可以获得正确的结果。

string path = "C:\\Program Files\\Program\\fatih.gurdal.docx";
string fileName = path.Substring(path.LastIndexOf(((char)92))+ 1);
int index = fileName.LastIndexOf('.');
string onyName= fileName.Substring(0, index);
string fileExtension = fileName.Substring(index + 1);
Console.WriteLine("Full File Name: "+fileName);
Console.WriteLine("Full File Ony Name: "+onyName);
Console.WriteLine("Full File Extension: "+fileExtension);

输出:

完整文件名:fatih.gurdal.docx

完整文件名称:fatih.gurdal

完整文件扩展名:docx

于 2017-02-10T13:32:19.850 回答
0

这对我来说可以删除 .extension 之前的任何 .sometext

//Remove all extensions "any .sometext.extension" from the file name
var newFileName= Path.GetFileNameWithoutExtension(fileName);
//Combine the the new file name with its actual extension "last .extension"
var fileNameWithExtension = newFileName+ "." + fileName.Split('.')[fileName.Split('.').Length - 1];
于 2021-01-03T10:07:45.220 回答