J'ai un répertoire qui ressemble à ceci:
C:\Users\me\Projects\
Dans mon application, j'ajoute à ce chemin un nom de projet donné:
C:\Users\me\Projects\myProject
Après, je veux pouvoir passer ça dans une méthode. Dans cette méthode, je voudrais également utiliser le nom du projet. Quelle est la meilleure façon d'analyser la chaîne de chemin d'accès pour obtenir le dernier nom de dossier?
Je sais qu'une solution de contournement serait de passer le chemin et le nom du projet dans la fonction, mais j'espérais pouvoir le limiter à un paramètre.
Tu peux faire:
string dirName = new DirectoryInfo(@"C:\Users\me\Projects\myProject\").Name;
Ou utilisez Path.GetFileName
Comme (avec un peu de hack) :
string dirName2 = Path.GetFileName(
@"C:\Users\me\Projects\myProject".TrimEnd(Path.DirectorySeparatorChar));
Path.GetFileName
renvoie le nom de fichier du chemin, si le chemin se termine par \
Alors il retournerait une chaîne vide, c'est pourquoi j'ai utilisé la fonction TrimEnd(Path.DirectorySeparatorChar)
string path = @"C:\Users\me\Projects\myProject";
string result = System.IO.Path.GetFileName(path);
result = myProject
Si vous êtes un fanatique de Linq comme moi, vous pouvez en profiter. Fonctionne quelle que soit la terminaison de la chaîne de chemin d'accès.
public static class PathExtensions
{
public static string GetLastPathSegment(this string path)
{
string lastPathSegment = path
.Split(new string[] {@"\"}, StringSplitOptions.RemoveEmptyEntries)
.LastOrDefault();
return lastPathSegment;
}
}
Exemple d'utilisation:
lastSegment = Paths.GetLastPathSegment(@"C:\Windows\System32\drivers\etc");
lastSegment = Paths.GetLastPathSegment(@"C:\Windows\System32\drivers\etc\");
Sortie: etc