gpt4 book ai didi

c# - 如何检查 uri 字符串是否有效

转载 作者:IT王子 更新时间:2023-10-29 03:45:40 26 4
gpt4 key购买 nike

如何检查 uri 字符串是否有效(您可以将其提供给 Uri 构造函数)?

到目前为止,我只有以下内容,但出于显而易见的原因,我更喜欢一种不那么粗暴的方式:

    Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}

我尝试了 Uri.IsWellFormedUriString 但它似乎并不喜欢您可以向构造函数抛出的所有内容。例如:

String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));

输出将是:

Uri.IsWellFormedUriString says: False
IsValidUri says: True

更新/回答

Uri 构造函数默认使用种类 Absolute。当我尝试使用 Uri.TryCreate 和构造函数时,这导致了差异。如果您同时为构造函数和 TryCreate 匹配 UriKind,您确实会得到预期的结果。

最佳答案

格式良好的 URI 意味着符合某些 RFC。您示例中的本地路径与这些不一致。在 IsWellFormedUriString 中阅读更多内容文档。

该方法的错误结果并不意味着 Uri 类将无法解析输入。虽然 URI 输入可能不符合 RFC,但它仍然可以是有效的 URI。

更新:回答您的问题 - 正如 Uri 文档所示,有一个名为 TryCreate 的静态方法这将准确地尝试您想要的并返回 true 或 false(如果为 true,则返回实际的 Uri 实例)。

关于c# - 如何检查 uri 字符串是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4835269/

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