如何从另一个路径中删除路径的一部分

本文关键字:路径 删除 一部分 另一个 | 更新日期: 2023-09-27 18:18:11

我有两个这样的文件路径:

var path1 = "c:'dir'anotherdir";
var path2 = "c:'dir'anotherdir'yetanotherdir'dirception'file.zip";
var result = path2 - path1; //Wanted result: yetanotherdir'dirception'file.zip

我需要做的是采用路径 1 并将其从路径 2 中"删除"。

现在最简单的解决方案是简单地使用 substr 或其他东西,然后简单地以"文本"方式从路径 2 中剪切出路径 1。但我宁愿使用一些 c# 中用于处理路径的实际内置函数来处理这个问题。

我试过这个:

var result = (new Uri(path1)).MakeRelativeUri(path2);

预期结果: 又一个目录''目录''文件.zip

实际结果:另一个dir''yetanotherdir''dirception''file.zip

那么实现我的目标的最佳方式是什么?

如何从另一个路径中删除路径的一部分

Path.GetFullPathString.StartsWithString.Substring应该足够可靠:

string path1 = @"c:'dir'anotherdir";
string path2 = @"c:'dir'anotherdir'yetanotherdir'dirception'file.zip";
string fullPath1 = Path.GetFullPath(path1);
string fullPath2 = Path.GetFullPath(path2);
if (fullPath2.StartsWith(fullPath1, StringComparison.CurrentCultureIgnoreCase))
{
    string result = fullPath2.Substring(fullPath1.Length).TrimStart(Path.DirectorySeparatorChar);
    // yetanotherdir'dirception'file.zip
}
你可以

把它换掉

var result = path2.Replace(path1+"/","");
var path1 = @"c:'dir'anotherdir";
var path2 = @"c:'dir'anotherdir'yetanotherdir'dirception'file.zip";
var path3 = path2.Replace(path1,""); // Will hold : 'yetanotherdir'dirception'file.zip

如果需要,可以删除第一个'。但是出于好奇,你为什么不想要路径的前缀呢?

如果在path1末尾添加额外的路径分隔符字符,则变为:

var path1 = "c:'dir'anotherdir'";

那么以下内容应该有效:

var result = (new Uri(path1)).MakeRelativeUri(new Uri(path2));