如果最后一个字符是带有 C# 的目录分隔符字符,请将其删除
本文关键字:字符 分隔符 删除 最后一个 如果 | 更新日期: 2023-09-27 17:56:28
我需要使用 Path.GetFileName()
提取路径信息,当输入字符串的最后一个字符是目录分隔符字符('/' 或 '''')时,此函数不起作用。
我想出了这个代码,但它太长了。有没有更好的方法?
string lastCharString = fullPath.Substring (fullPath.Length-1);
char lastChar = lastCharString[0];
if (lastChar == Path.DirectorySeparatorChar) {
fullPath = fullPath.Substring(0, fullPath.Length-1);
}
fullPath = fullPath.TrimEnd(Path.DirectorySeparatorChar);
// If the fullPath is not a root directory
if (Path.GetDirectoryName(fullPath) != null)
fullPath = fullPath.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
while(fullPath.EndsWith(Path.DirectorySeparatorChar.ToString())){
fullPath = fullPath.Substring(0, fullPath.Length-1);
}
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
希望对您有所帮助。
fullPath = Path.GetFileName(
fullPath.Split(
new [] { Path.DirectorySeparatorChar },
StringSplitOptions.RemoveEmptyEntries
).Last()
)
基于Marino Šimić的回答和Dima的评论,这是一个不会在C:
和C:'
上失败的解决方案:
var newPath = Path.Combine(Path.GetDirectoryName(oldPath) ?? oldPath, Path.GetFileName(oldPath));