📜  c# string to uri - C# (1)

📅  最后修改于: 2023-12-03 14:39:44.123000             🧑  作者: Mango

C# string to URI

在C#中,我们有时候需要将一个字符串转换成一个URI对象,例如用于发送HTTP请求、构建URL等。本文将介绍如何在C#中将一个字符串转换成一个URI对象。

首先,我们需要使用System命名空间下的Uri类,该类提供了一个静态方法TryParse,可以将一个字符串转换成一个URI对象。示例代码如下所示:

string strUrl = "https://www.example.com/path?query=string#fragment";
Uri uriResult;
bool result = Uri.TryCreate(strUrl, UriKind.Absolute, out uriResult);
if (result == true)
{
    Console.WriteLine("转换成功:{0}", uriResult.ToString());
}
else
{
    Console.WriteLine("转换失败");
}

上述代码中,我们将一个字符串strUrl转换成一个URI对象,方法是使用Uri.TryCreate静态方法,并将第二个参数设置为UriKind.Absolute,表示该字符串是一个绝对URI。

如果转换成功,Uri.TryCreate方法会返回一个bool值,表示转换是否成功,同时将转换后的URI对象存储在第三个参数uriResult中。我们可以使用uriResult.ToString()方法获取转换后的URI字符串。如果转换失败,uriResult将被设置为一个空值。

此外,我们还可以使用Uri类提供的其他方法和属性,例如获取URI协议、主机名、端口、路径、查询字符串等。

下面是一个完整的示例代码,其中我们定义了一个PrintUriInfo方法,用于打印URI的各个部分:

using System;

class Program
{
    static void Main(string[] args)
    {
        string strUrl = "https://www.example.com/path?query=string#fragment";
        Uri uriResult;
        bool result = Uri.TryCreate(strUrl, UriKind.Absolute, out uriResult);
        if (result == true)
        {
            Console.WriteLine("转换成功:{0}", uriResult.ToString());
            PrintUriInfo(uriResult);
        }
        else
        {
            Console.WriteLine("转换失败");
        }
    }

    static void PrintUriInfo(Uri uri)
    {
        Console.WriteLine("协议:" + uri.Scheme);
        Console.WriteLine("主机名:" + uri.Host);
        Console.WriteLine("端口号:" + uri.Port);
        Console.WriteLine("路径:" + uri.AbsolutePath);
        Console.WriteLine("查询字符串:" + uri.Query);
        Console.WriteLine("片段标识符:" + uri.Fragment);
    }
}

输出结果如下所示:

转换成功:https://www.example.com/path?query=string#fragment
协议:https
主机名:www.example.com
端口号:-1
路径:/path
查询字符串:?query=string
片段标识符:#fragment

上述代码中,我们调用了PrintUriInfo方法,获取了URI的各个部分信息,并打印输出到控制台。

总结一下,在C#中将一个字符串转换成一个URI对象,我们可以使用System.Uri.TryCreate方法,并将第二个参数设置为UriKind.Absolute,同时可以使用Uri类提供的其他方法和属性来操作URI对象。