Enlever une partie de la totalité du nom du répertoire?
J'ai une liste de nom de fichier avec le chemin complet dont j'ai besoin pour retirer le nom de fichier et une partie du chemin du fichier, compte tenu d'une liste de filtres que j'ai.
Path.GetDirectoryName(file)
Fait une partie du travail, mais je me demandais si il ya un moyen simple de filtrer les chemins à l'aide .Net 2.0 pour supprimer une partie d'elle.
Par exemple:
si j'ai le path + filename
égal àC:\my documents\my folder\my other folder\filename.exe
et à tous j'ai besoin est ce qui est au-dessus de my folder\
signifie que j'ai besoin d'extraire uniquement my other folder
.
Mise à JOUR:
La liste de filtres est une zone de texte avec les noms de dossiers séparés par un ,
je viens donc de noms partiels sur elle comme l'exemple ci-dessus, le filtre serait my folder
Solution actuelle basée sur Rob code:
string relativeFolder = null;
string file = @"C:\foo\bar\magic\bar.txt";
string folder = Path.GetDirectoryName(file);
string[] paths = folder.Split(Path.DirectorySeparatorChar);
string[] filterArray = iFilter.Text.Split(',');
foreach (string filter in filterArray)
{
int startAfter = Array.IndexOf(paths, filter) + 1;
if (startAfter > 0)
{
relativeFolder = string.Join(Path.DirectorySeparatorChar.ToString(), paths, startAfter, paths.Length - startAfter);
break;
}
}
C'est une zone de texte rempli avec des noms de dossiers séparés par
,
oublié de mentionner que merci pour le commentaire.OriginalL'auteur Prix | 2011-03-12
Vous devez vous connecter pour publier un commentaire.
Comment quelque chose comme cela:
Cette méthode tente de savoir si la dernière partie est un nom de fichier et le laisse tomber si elle est.
À l'appeler avec
retourne
À l'appeler avec
renvoie le même.
OriginalL'auteur Rob Levine
vous pouvez utiliser cette méthode pour diviser le chemin d'accès par " \ " ("/" dans des environnements Unix). Après cela, vous obtenez un tableau de chaînes de caractères en arrière et vous pouvez choisir ce que vous avez besoin.
prudent avec vous le choix de chemin d'accès au répertoire séparateurs. "\" est vrai que sur Windows, mais peut être pas sur une autre plate-forme.
Rob les conseils sont toujours de bons conseils. Vous pouvez utiliser
Path.DirectorySeparatorChar
au lieu de coder en dur. Tout moment vous éviter les chaînes magiques.Mise à jour de la solution, comme suggéré par @Prix et les autres
OriginalL'auteur MUG4N