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

2024-02-13

如何检查 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 构造函数使用绝对类型。当我尝试使用 Uri.TryCreate 和构造函数时,这导致了差异。如果您匹配构造函数和 TryCreate 的 UriKind,您确实会得到预期的结果。


格式良好的 URI 意味着符合某些 RFC。您的示例中的本地路径与这些不符。阅读更多内容IsWellFormedUriString http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx文档。

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

Update:回答你的问题 - 正如 Uri 文档所示,有一个静态方法称为TryCreate http://msdn.microsoft.com/en-us/library/ms131572.aspx这将完全尝试你想要的并返回 true 或 false (以及实际的Uri实例如果为真)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 uri 字符串是否有效 的相关文章

随机推荐

  • 空字符串对于 React Link 来说是有效值吗?

    我正在写一个React js http React 20 E2 80 93 20A 20JavaScript 20library 20for 20building 20user 20interfaces 20 20https reactjs
  • 如何在Python中使用将双反斜杠替换为单反斜杠来替换字节字符串

    我想将 Python 中字节字符串的双反斜杠替换为单反斜杠 例如 有一个字节字符串 word b Z xa6 x97 x86j2 x08q r xca xe6m 我需要这个字节字符串 word b Z xa6 x97 x86j2 x08q
  • WPF 类和相应的视觉样式继承

    我已经看过 但显然在与类和样式相关时无法获得正确的语法 我有具有特定行为的控件 我派生出一些来添加额外的行为 现在 我想要一个与每个版本相对应的样式 在最简单的示例中 我将忽略这些类 因为我知道样式与视觉影响具体相关 而不是与功能影响相关
  • 添加 nuget 包源的脚本方式

    我们想要启动一个公司 nuget 包存储库 有没有办法通过命令行添加包源 以便我们可以通过设置或其他方式配置新的包源 我们基本上不想去 工具 选项 包管理器 包源 加号按钮 添加名称和来源 在公司的每台开发人员机器上 包源存储在用户配置文件
  • 如何获取 boto3 集合的大小?

    我一直使用的方法是将Collection转换为List并查询长度 s3 boto3 resource s3 bucket s3 Bucket my bucket size len list bucket objects all 然而 这会强
  • 用颜色条调整子图

    I have made the following visualization I am at loss to figure out how to adjust the size of the third subplot according
  • 防止 $anchorScroll 修改 url

    我在用 anchorScroll https docs angularjs org api ng service 24anchorScroll滚动到 html 元素具有 ID 的页面顶部 brand
  • Spring MVC @RequestMapping 继承

    来自 Struts2 我习惯于声明 Namespace超类上的注释 或package info java 并且继承类随后将获取中的值 Namespace其祖先的注释并将其添加到操作的请求路径之前 我现在正在尝试使用 Spring MVC 做
  • 两个几乎相同的批处理脚本之一中存在语法错误:“)”无法在此处进行语法处理

    我正在尝试设置 Jenkins 服务器来自动构建 Unity 因此 我编写了两个 在我看来 基本相同的批处理脚本 这两个脚本均由 Jenkins 通过Execute Windows batch command步骤使用 Command E u
  • chrome.identity.getProfileUserInfo() 返回空 ID [重复]

    这个问题在这里已经有答案了 我不知道这是否只是开发问题 因为我还没有发布我的扩展 getProfileUserInfo 返回 email id 我是否登录 chrome 并不重要 这是我的清单中的权限 permissions activeT
  • 如何在 MVC 中获取站点的基本 url [重复]

    这个问题在这里已经有答案了 我想向用户发送一封电子邮件 他可以在其中单击链接以转移到我的网站 我不想在我的电子邮件模板中对 URL 进行硬编码 我想要这种动态 无论环境如何 它都会发送相关的 url 就像如果我在开发环境中它会发送类似的内容
  • 在 python 中创建漂亮的列输出

    我正在尝试在 python 中创建一个漂亮的列列表 以便与我创建的命令行管理工具一起使用 基本上 我想要一个类似的列表 a b c aaaaaaaaaa b c a bbbbbbbbbb c 变成 a b c aaaaaaaaaa b c
  • 在 iOS 版 Chrome 上拦截 AJAX 请求?

    我通过更改来拦截我网站中的 AJAX 请求XMLHttpRequest prototype open and send方法 这种方法在我测试的所有浏览器中都没有任何问题 然而 当涉及 iOS iPhone 版 Chrome 时 代码有一个最
  • 带有引用元组的结构化绑定引用

    The cppreference 中的结构化绑定案例2 https en cppreference com w cpp language structured binding有点难以理解 基本上 我想澄清这些情况 int x 1 doubl
  • Windows 上的 Git GUI:合并冲突

    我在命令行上能熟练使用 Git 但对于特定项目 我需要向其他人展示如何专门在 GUI 环境中执行操作 我们正在使用 Windows 版 Git 可在https git scm com download win https git scm c
  • HTML onSubmit / onClick 处理函数可以有除事件之外的其他参数吗? [复制]

    这个问题在这里已经有答案了 我面临一些案例onClick or onSubmit功能需要两者event and parameter 我可以在 React 或普通 html 标签中使用它吗 或者 只是使用其他函数做一些副作用 const Cu
  • CSS如何修复元素随页面水平滚动而不是垂直滚动?

    我创建了一个示例来帮助解释 http jsfiddle net 9AUbj 1 http jsfiddle net 9AUbj 1 div Hello World div div div div div 我想要 你好世界 当用户水平滚动时随
  • 服务器端 Push in Rails

    我想使用 AJAX 在 Rails 中实现一个可扩展的聊天室 我从研究中得知 唯一的可扩展性是通过服务器端推送实现的 我的两个问题是 1 在一个相当高效的聊天服务器中 什么时候轮询会变得禁止 2 我真的不想使用Juggernaut 我不太了
  • ANCS 是否支持向多个 BLE 设备发送通知?

    多台设备与同一台 iPhone 配对 但只有一台设备收到 ANCS 通知 在装有 iOS 9 3 2 的 iPhone 6 上进行测试 我可以确认 ANCS 会向所有订阅它的设备发送通知 也就是说 当通过控制点请求通知属性时 iOS 并不关
  • 如何检查 uri 字符串是否有效

    如何检查 uri 字符串是否有效 可以将其提供给 Uri 构造函数 到目前为止 我只有以下内容 但出于明显的原因 我更喜欢一种不那么粗暴的方式 Boolean IsValidUri String uri try new Uri uri re