Удалите последний символ, если он DirectorySeparatorChar с С#

Мне нужно извлечь информацию о пути с помощью Path.GetFileName(), и эта функция не работает, если последний символ входной строки - DirectorySeparatorChar ('/' или '\').

Я придумал этот код, но он слишком длинный. Есть ли лучший способ пойти?

string lastCharString = fullPath.Substring (fullPath.Length-1);
char lastChar = lastCharString[0];

if (lastChar == Path.DirectorySeparatorChar) {
    fullPath = fullPath.Substring(0, fullPath.Length-1);
}

Ответы

Ответ 1

fullPath = fullPath.TrimEnd(Path.DirectorySeparatorChar);

Ответ 2

// If the fullPath is not a root directory
if (Path.GetDirectoryName(fullPath) != null)
    fullPath = fullPath.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);

Ответ 3

string path1 =  @"c:\directory\";
string path2 = @"c:\directory\file.txt";
string path3 = @"c:\directory";

Console.WriteLine(Path.Combine(Path.GetDirectoryName(path1), Path.GetFileName(path1)));
Console.WriteLine(Path.Combine(Path.GetDirectoryName(path2), Path.GetFileName(path2)));
Console.WriteLine(Path.Combine(Path.GetDirectoryName(path3), Path.GetFileName(path3)));

дает:

c:\directory
c:\directory\file.txt
c:\directory

Надеюсь, что это поможет.

Ответ 4

while(fullPath.EndsWith(Path.DirectorySeparatorChar.ToString())){
   fullPath = fullPath.Substring(0, fullPath.Length-1);
}

Ответ 5

fullPath = Path.GetFileName(
    fullPath.Split(
        new [] { Path.DirectorySeparatorChar }, 
        StringSplitOptions.RemoveEmptyEntries
    ).Last()
)