Uri.TryCreate 为任何字符串值返回 true?

Posted

技术标签:

【中文标题】Uri.TryCreate 为任何字符串值返回 true?【英文标题】:Uri.TryCreate returns true for any string value? 【发布时间】:2011-05-08 20:32:48 【问题描述】:

我正在尝试使用 Uri.TryCreate 方法验证 Uri,当我使用无效字符串调用它时,该方法返回 true。任何想法为什么?我的代码如下:

    private void button1_Click(object sender, EventArgs e)
    
        Uri tempValue;
        if (Uri.TryCreate("NotAURL", UriKind.RelativeOrAbsolute, out tempValue))
        
            MessageBox.Show("?");
        
    

【问题讨论】:

【参考方案1】:

这是一个有效的相对 URL。无效 URI 的示例是:

"http://example.com<>"

如果您只想允许绝对 URI,请使用 UriKind.Absolute

然后该示例将无法解析。

【讨论】:

有趣,我想我没有把它当成一个文件夹。我正在尝试验证网站 URL,所以我没有考虑文件夹路径。谢谢! 它可能是网站上的相对 URI。例如。如果您使用的是http://example.com/,则该相对 URL 指的是http://example.com/NotAURL 是的,这就是我所做的——将其切换为 UriKind.Absolute。再次感谢。 空字符串或“?”根据此方法,也是有效的相对 uri。这有什么意义? 使用空字符串作为相对 URL 引用当前文档。例如,如果当前文档是http://example.org/foo/bar.html,则空的相对 URL 指的是同一个文件。相对 URL ? 也指具有空查询字符串的同一文件;如果原始 URL 已经有一个查询字符串,则新的会替换旧的。例如,从http://example.org/foo/bar.html?foo=bar 开始,相对 URL ?baz=qux 产生http://example.org/foo/bar.html?baz=qux。 (空的相对 URL 保留原始查询字符串。)

以上是关于Uri.TryCreate 为任何字符串值返回 true?的主要内容,如果未能解决你的问题,请参考以下文章

NET问答: 如何检查一个 string 是否为有效的 url 格式?

Golang学习 - strconv 包--数据类型转换

Mysql中contactgroup_concatconcat_wsrepeat

是否有任何通用 Parse() 函数可以使用解析将字符串转换为任何类型?

将 T-SQL 表值函数字符串拆分为 C#

MySQL字符串连接函数