【问题标题】:How to combine file absolute and relative uri or path?如何结合文件绝对和相对uri或路径?
【发布时间】:2021-06-15 10:05:58
【问题描述】:

我想要实现的是一个组合函数,它采用一个绝对路径/uri 和一个相对路径/uri,并返回两者的组合。例如,考虑以下两条路径:

var root = "c:\src";
var images = "/images/logo.png" ;
var combined = Combine (root, images); // Either 'c:/src/images/logo.png' or 'c:\src\images\logo.png' is acceptable

我想避免手动操作/拦截正斜杠和反斜杠,并且我想坚持使用 .Net 内置功能。 我试过UriPath.Combine 但没有运气。最大的问题是images 以正斜杠开头,但我想必须有一种方法告诉.Net 将其视为相对于绝对路径。

【问题讨论】:

标签: c# .net path uri


【解决方案1】:

我不知道有任何内置功能可以按照您想要的方式执行此操作。

考虑到这一点,您似乎应该能够删除前导斜杠:

var root = "c:\\src";
var sourceOfImages = "/images/logo.png";
var images = sourceOfImages.TrimStart('/', '\\');
var combined = Path.Combine(root, images);

现在这确实导致输出具有不同格式的闪烁:

c:\src\images/logo.png

我建议使用字符串Replace 来解决这个问题:

var combined = Path.Combine(root, images).Replace("/", "\\"); // or .Replace("\\", "/");

这会按照我们的预期输出路径:

c:\src\images\logo.png

Try it online

【讨论】:

  • 为什么.Net 无法处理这种简单的场景?为什么我们需要迎合尾部斜线?我想尽可能避免拦截/操纵它。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 2010-12-11
  • 2016-05-16
  • 2013-04-17
  • 2022-01-17
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多