gpt4 book ai didi

c# - 物理、相对、绝对和其他路径

转载 作者:可可西里 更新时间:2023-11-01 08:17:02 28 4
gpt4 key购买 nike

我的任务是编写一个对象,该对象可以接收不同类型的路径/url,并返回它是什么类型的路径/url。例如路径可以是

1. [drive]:\Temp 
2. \\Temp
3. Temp (assuming that it relative Temp),
4. /Temp
5. ~/Temp
6. file://[drive]:/Temp
7. file://Temp
8. [scheme]://something/Temp

...等等。

如何检查 C# 是物理路径、相对 URL 还是绝对 URL?

我觉得比较容易知道是相对的还是绝对的uri,但是怎么知道是不是UNC路径呢?

我尝试使用 Uri 对象和它的 IsUnc 属性,但它并没有真正帮助我....对于 c:\temp 它返回 false,对于“/temp”、“temp/”和“temp”它抛出一个格式不正确的异常。 .NET 3.5 中是否存在任何内置对象可以帮助我解决这个问题,或者我可以使用什么算法来确定路径类型?

最佳答案

试试这个:

var paths = new[]
{
@"C:\Temp",
@"\\Temp",
"Temp",
"/Temp",
"~/Temp",
"file://C:/Temp",
"file://Temp",
"http://something/Temp"
};

foreach (string p in paths)
{
Uri uri;
if (!Uri.TryCreate(p, UriKind.RelativeOrAbsolute, out uri))
{
Console.WriteLine("'{0}' is not a valid URI", p);
}
else if (!uri.IsAbsoluteUri)
{
Console.WriteLine("'{0}' is a relative URI", p);
}
else if (uri.IsFile)
{
if (uri.IsUnc)
{
Console.WriteLine("'{0}' is a UNC path", p);
}
else
{
Console.WriteLine("'{0}' is a file URI", p);
}
}
else
{
Console.WriteLine("'{0}' is an absolute URI", p);
}
}

输出:

'C:\Temp' is a file URI
'\\Temp' is a UNC path
'Temp' is a relative URI
'/Temp' is a relative URI
'~/Temp' is a relative URI
'file://C:/Temp' is a file URI
'file://Temp' is a UNC path
'http://something/Temp' is an absolute URI

关于c# - 物理、相对、绝对和其他路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com