问题
If i have:
C:\temp\foo\bar\
(NOTE: bar is a directory)
how can i parse out:
bar
回答1:
I figured it out.
DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;
回答2:
Try
System.IO.Path.GetFileName("C:\\temp\\foo\\bar");
回答3:
Just use:
string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;
According to MSDN this returns the name of the directory, not the full path.
Link to MSDN Library
Hope this helps.........
回答4:
It looks like a bunch of people have withdrawn their answers, which is possibly a shame.
This one's got to be worth stating, only for the "teach a man to fish" quality of it - it's short, elegant and made of two separate things that, once learned, can be re-applied to other problems.
string lastPiece = wholePath.Split('\\').Last();
Last will throw if the list is empty.
回答5:
The simplest way to do this without creating a new DirectoryInfo instance is to use the Path.GetFileName static method. This is located in System.IO.
using System.IO;
string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");
The variable would be set to "Folder2".
This is quite a bit more efficient that creating a new instance of the DirectoryInfo class!
回答6:
I can think of 4 ways instantly
1
- If the string ends with a slash remove it
- Use Path.GetFilename (or numerous other System.IO methods)
2
- Split the string on slashes into an array
- Get the last index of the array
3
- Create a Uri class with it in the constructor
- Use the Segments property
4
- The linq way someone mentioned above
回答7:
string dirname = new DirectoryInfo(path).Name;
Console.WriteLine(dirname);
回答8:
In Unix this is known as the basename, a quick google came up with this link for a C# version. I'm sure there are others ...
回答9:
if the answers above do not satisfy your needs, why not just substring the string from the last .
string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);
sure, you should do some checking if the originalDirName does not end on a \ and if the originalDirName is longer than zero and actually contains \ characters.
回答10:
Try this
string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;
来源:https://stackoverflow.com/questions/670819/get-directory-from-full-path