当前位置: 首页 > 编程语言 > C#

有没有一种简单的方法可以在C#中组合两个相对路径?分享

时间:2023-04-10 22:17:16 C#

有没有简单的方法在C#中组合两个相对路径?我正在尝试在C#中组合两个相对路径。例如:stringpath1="/System/Configuration/Panels/Alpha";stringpath2="Panels/Alpha/Data";我想找回stringresult="/System/Configuration/Panels/Alpha/Data";划分第二个数组并在for循环中比较它以实现此目的,但我想知道是否有类似于Path.Combine的东西可用,或者是否可以使用正则表达式或Linq完成?谢谢如果两个字符串始终采用与示例中相同的格式,则这应该有效:stringpath1="/System/Configuration/Panels/Alpha";stringpath2="Panels/Alpha/Data";变量x=路径1。分裂('/');vary=path2.Split('/');字符串结果=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"Forpath1="/System/a/b/a/b"andpath2="a/b/a/b/c",结果是“/系统/a/b/a/b/a/b/c”。您可以将LastOrDefault更改为FirstOrDefault以获取“/System/a/b/a/b/c”。请注意,该算法基本上创建了两条路径的所有可能组合,并不是特别有效。我认为这需要事先知道某些文件夹是相同的,您不能从路径中安全地推断出这些文件夹(假设它不是绝对的)。您必须自己编写一些自定义逻辑来组合这些路径。试试这个...varp1=path1.Split('/');varp2=path2.Split('/');结果=p1.Union(p1);它使用System.Linq并且可以很容易地打包为扩展方法。当然,它假设了一些关于path1和path2的东西。Path.GetFullPath(Path.Combine(path1,path2))GetFullPath将合并并简化生成的路径。编辑:没关系,这只适用于绝对路径......以上是C#学习教程:IsthereastheeasywaytocombinetworelativepathsinC#?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: