C# 字符串到 URL 执行

问题描述 投票:0回答:1

这是一个重复的问题吗……可能是。关于这个主题有一百万个 +1 讨论,但我无法让其中一个正常工作。我有一根绳子。我想把这个字符串变成一个URL。然后我想使用该 URL 导航到我的默认浏览器中的页面。为什么这么难?

我能找到的最接近的解决方案是:

string content = "www.linkedin.com/taylormade-golf-company"
string url = Uri.EscapeDataString(content);
System.Diagnostics.Process.Start(url);

这会引发错误“System.ComponentModel.Win32Exception:'系统找不到指定的文件'”。

如果我在 System.Diagnostics.Process.Start 中使用“content”代替“url”,则需要: “https://www.linkedin.com/taylormade-golf-company?_l=en_US”

如何简单地使用字符串导航到代码隐藏的网页?

c# url
1个回答
0
投票

EscapeDataString 是完成这项工作的错误工具。其目标是用可以安全地通过网络而不改变的编码替换 URL 中的任何非安全字符。

如果

content
的值有效,那为什么还要麻烦呢?

无论如何,有一个

UriBuilder
在其构造函数中接受一个字符串,然后在解析该字符串时进行猜测,从而一路进行构建。

string content = "www.linkedin.com/taylormade-golf-company";
var ub = new UriBuilder(content);
Console.WriteLine(ub);

这将输出

http://www.linkedin.com:80/taylormade-golf-company

因为它为你制定了方案及其匹配的端口。

如果您不希望这样,您可以在实例上设置属性来更改这些:

ub.Scheme = "https";
ub.Port = 443;

会回来

https://www.linkedin.com:443/taylormade-golf-company

但此时,如果内容不是以此开头,您不妨在内容前面加上“https://”。

UriBuilder 还有一个

Uri
属性,它将返回当前 UriBuilder 具有正确的
Uri
类型实例而不是字符串的值。

请注意,Uri 也有一个

TryCreate
,但它需要一个有效的 Uri 作为字符串,并且包含一个有效的方案。您的
content
变量中的值缺少方案,因此 TryCreate 将返回 false,并且您不会获得 Uri。

© www.soinside.com 2019 - 2024. All rights reserved.