有一种简单的方法可以在C#中组合两个相对路径吗?
我想在C#中组合两个相对路径。
例如:
string path1 = "/System/Configuration/Panels/Alpha"; string path2 = "Panels/Alpha/Data";
我想回来
string result = "/System/Configuration/Panels/Alpha/Data";
我可以通过拆分第二个数组并在for循环中比较它来实现这一点,但我想知道是否有类似于Path.Combine
东西可用或者是否可以用正则表达式或Linq完成?
谢谢
如果两个字符串的格式始终与示例中的格式相同,则应该可以:
string path1 = "/System/Configuration/Panels/Alpha"; string path2 = "Panels/Alpha/Data"; var x = path1.Split('/'); var y = path2.Split('/'); string result = Enumerable.Range(0, x.Count()) .Where(i => x.Skip(i) .SequenceEqual(y.Take(x.Skip(i) .Count()))) .Select(i => string.Join("/", x.Take(i) .Concat(y))) .LastOrDefault(); // result == "/System/Configuration/Panels/Alpha/Data"
对于path1 = "/System/a/b/a/b"
和path2 = "a/b/a/b/c"
,结果为"/System/a/b/a/b/a/b/c"
。 您可以将LastOrDefault更改为FirstOrDefault以获取"/System/a/b/a/b/c"
。
注意,该算法基本上创建了两个路径的所有可能组合,并且不是特别有效。
我认为这需要先验知识,某些文件夹是相同的,你不能从路径中安全地推断出来(假设它不是绝对的)。
您必须自己编写一些自定义逻辑来组合这些路径。
试试这个…
var p1 = path1.Split('/'); var p2 = path2.Split('/'); result = p1.Union(p1);
它使用System.Linq,可以很容易地打包成扩展方法。
当然,它假设了一些关于path1和path2的值。
Path.GetFullPath(Path.Combine(path1,path2))
GetFullPath将合并并简化生成的路径。
编辑:没关系,这只适用于绝对路径……
上述就是C#学习教程:有一种简单的方法可以在C#中组合两个相对路径吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1037476.html