DirectoryPath
= C:\ Pics
filePath
= C:\ Pics \ Dogs \ dog.PNG
newPath
应为: Dogs \ dog.PNG
如何获得newPath
?
我的代码段不正确
string directoryPath = "C:\\Pics";
string filePath = "C:\\Pics\\Dogs\\dog.PNG";
if (!directoryPath.EndsWith("\\"))
directoryPath = directoryPath + "\\";
string newPath = filePath.Substring(filePath.LastIndexOf(directoryPath) + 1);
提前致谢!
答案 0 :(得分:3)
从int
获得的LastIndexOf()
索引始终以最右边的值开头,在您的情况下为0.您还必须为此添加String.Lenght
。
if (filePath.StartsWith(directoryPath))
{
string newPath =
filePath.Substring(filePath.LastIndexOf(directoryPath) + directoryPath.Length + 1);
}
答案 1 :(得分:3)
你可以在目录路径中附加一个反斜杠&然后在文件路径中用空字符串替换目录路径
newPath = filePath.Replace(DirectoryPath + @"\", string.Empty);
如果directoryPath与filePath的开头不匹配,则newPath将保持不变。
我在编辑代码之前发布了这个,以显示反斜杠的条件添加 - 这样就可以在上面的代码中删除了。
答案 2 :(得分:2)
我首先检查filePath
是否包含DirectoryPath
,所以我会这样做:
var newPath=filePath.Contains(DirectoryPath)?filePath.Substring(DirectoryPath.Length + 1)
:filePath;
甚至更好,使用StartsWith
var newPath=filePath.StartsWith(DirectoryPath)?filePath.Substring(DirectoryPath.Length + 1)
:filePath;