Ioa*_*nis 3 c# regex path relative-path
我想在C#中结合两个相对路径。
例如:
string path1 = "/System/Configuration/Panels/Alpha";
string path2 = "Panels/Alpha/Data";
Run Code Online (Sandbox Code Playgroud)
我想回来
string result = "/System/Configuration/Panels/Alpha/Data";
Run Code Online (Sandbox Code Playgroud)
我可以通过拆分第二个数组并在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"
Run Code Online (Sandbox Code Playgroud)
对于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"。
请注意,该算法实际上会创建两条路径的所有可能组合,并且效率不是很高。