0

如果我们有/TestDir一个示例路径,但我们在 Windows 机器上,使用Path.JoinPath.CombinewithNextDir将产生/TestDir\NextDir

有没有办法让它,如果我将它附加到的路径使用给定的分隔符 - 组合路径使用相同的分隔符?(Unix/Windows),即:

  • \TestDirNextDir屈服\TestDir\NextDir
  • /TestDirNextDir屈服/TestDir/NextDir

第一个目录将始终是根路径,这意味着它将始终包含要使用的路径分隔符。唯一的边缘情况是网络路径,因为它们总是以开头\\但之后它们在 Unix/Windows 中有所不同?如果我在这方面错了,请纠正我。

编辑:有人告诉我这:是 Classic Mac 的路径分隔符 - 这是真的吗?我没有看到任何将其视为目录分隔符的 .NET API。

4

2 回答 2

0

Path 类使用名称为:PathSeparator 的字段,该字段取决于操作系统并且是只读的,因此更容易创建自己的类来执行与 Path 相同的操作,但您可以更改 PathSeparator 的值。

有关 Path 的更多信息,您可以阅读文档:https ://docs.microsoft.com/en-us/dotnet/api/system.io.path?view=net-5.0

于 2021-07-13T00:41:31.867 回答
0

这将采用它看到的第一个字符(/或),并将所有其他出现的or替换为它找到的第一个字符。\/\

using System;

public class Example
{
   public static void Main()
   {
      char[] separators = { '\\', '/' };
      string path = "/TestDir\\NextDir\\AndTheNext/AndTheNext/AndTheNext\\AndTheNext";
      int index = path.IndexOfAny(separators);        
      path = path[index].ToString() == "\\" ? path.Replace('/', '\\') : path.Replace('\\', '/');
      Console.WriteLine(path);
   }
}

在此处查看运行情况:https ://dotnetfiddle.net/fenzWO

于 2021-07-12T08:27:20.290 回答