日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

System.Uri類

 ThinkTank_引擎 2016-01-14

  System.Uri類用于處理Uri地址信息,常用到它的地方有,相對(duì)Uri地址轉(zhuǎn)絕對(duì)Uri地址,獲取Uri的某部分信息等等,可以說是一個(gè)非常有用的類。

一、屬性

AbsolutePath   獲取 URI 的絕對(duì)路徑。
AbsoluteUri     獲取絕對(duì) URI。
Authority      獲取服務(wù)器的域名系統(tǒng) (DNS) 主機(jī)名或 IP 地址和端口號(hào)。
DnsSafeHost   獲得可安全用于 DNS 解析的未轉(zhuǎn)義主機(jī)名。
Fragment     獲取轉(zhuǎn)義 URI 片段。
Host        獲取此實(shí)例的主機(jī)部分。
HostNameType  獲取 URI 中指定的主機(jī)名的類型。
IsAbsoluteUri   獲取一個(gè)值,該值指示 Uri 實(shí)例是否為絕對(duì) URI。
IsDefaultPort   獲取一個(gè)值,該值指示 URI 的端口值是否為此方案的默認(rèn)值。
IsFile       獲取一個(gè)值,該值指示指定的 Uri 是否為文件 URI。
IsLoopback     獲取一個(gè)值,該值指示指定的 Uri 是否引用了本地主機(jī)。
IsUnc       獲取一個(gè)值,該值指示指定的 Uri 是否為統(tǒng)一命名約定 (UNC) 路徑。
LocalPath     獲取文件名的本地操作系統(tǒng)表示形式。
OriginalString   獲取傳遞給 Uri 構(gòu)造函數(shù)的原始 URI 字符串。
PathAndQuery   獲取用問號(hào) (?) 分隔的 AbsolutePath 和 Query 屬性。
Port         獲取此 URI 的端口號(hào)。
Query       獲取指定 URI 中包括的任何查詢信息。
Scheme      獲取此 URI 的方案名稱。
Segments     獲取包含構(gòu)成指定 URI 的路徑段的數(shù)組。
UserEscaped     指示 URI 字符串在創(chuàng)建 Uri 實(shí)例之前已被完全轉(zhuǎn)義。
UserInfo       獲取用戶名、密碼或其他與指定 URI 關(guān)聯(lián)的特定于用戶的信息。

復(fù)制代碼
class Program
    {
        static void Main(string[] args)
        {
            Uri uri = new Uri("http://www.baidu.com:80/2013/123.html?id=1");
            
            Console.WriteLine(uri.AbsolutePath);    //輸出 /2013/123.html
            Console.WriteLine(uri.AbsoluteUri);     //輸出 http://www.baidu.com/2013/123.html?id=1
            Console.WriteLine(uri.Authority);       //輸出 www.baidu.com
            Console.WriteLine(uri.DnsSafeHost);     //輸出 www.baidu.com
            Console.WriteLine(uri.Fragment);        //輸出 
            Console.WriteLine(uri.Host);            //輸出 www.baidu.com
            Console.WriteLine(uri.IsAbsoluteUri);   //輸出 True
            Console.WriteLine(uri.IsDefaultPort);   //輸出 True
            Console.WriteLine(uri.IsFile);          //輸出 False

            Uri uri1 = new Uri(@"D:\test\test.txt");
            Console.WriteLine(uri1.IsFile);          //輸出 True

            Console.WriteLine(uri.IsLoopback);      //輸出 False
            Console.WriteLine(uri1.IsLoopback);     //輸出 True

            Console.WriteLine(uri.IsUnc);           //輸出 False
            Console.WriteLine(uri.LocalPath);       //輸出 /2013/123.html
            Console.WriteLine(uri.OriginalString);  //輸出 http://www.baidu.com:80/2013/123.html
            Console.WriteLine(uri.PathAndQuery);    //輸出 /2013/123.html?id=1
            Console.WriteLine(uri.Port);            //輸出 80
            Console.WriteLine(uri.Query);           //輸出 ?id=1
            Console.WriteLine(uri.Scheme);          //輸出 http
            string[] strArr = uri.Segments;
            foreach (string str in strArr)
            {
                Console.WriteLine(str);     //輸出 /   2013/      123.html
            }

            Console.WriteLine(uri.UserEscaped);     //輸出 False;
            Console.WriteLine(uri.UserInfo);        //輸出 

            Console.ReadKey();
        }
    }
復(fù)制代碼

 二、方法

CheckHostName     確定指定的主機(jī)名是否為有效的 DNS 名稱。
CheckSchemeName    確定指定的方案名是否有效。
Compare          使用指定的比較規(guī)則比較兩個(gè) URI 的指定部分。
EscapeDataString    將字符串轉(zhuǎn)換為它的轉(zhuǎn)義表示形式。
EscapeUriString     將 URI 字符串轉(zhuǎn)換為它的轉(zhuǎn)義表示形式。
FromHex          獲取十六進(jìn)制數(shù)字的十進(jìn)制值。
GetComponents     使用特殊字符的指定轉(zhuǎn)義,獲取當(dāng)前實(shí)例的指定部分。
GetLeftPart        獲取 Uri 實(shí)例的指定部分。
GetObjectData       返回序列化當(dāng)前實(shí)例所需的數(shù)據(jù)。
HexEscape         將指定的字符轉(zhuǎn)換它的等效十六進(jìn)制字符。
HexUnescape       將字符的指定十六進(jìn)制表示形式轉(zhuǎn)換為字符。
IsBaseOf         確定當(dāng)前的 Uri 實(shí)例是否為指定 Uri 實(shí)例的基。
IsHexDigit        確定指定的字符是否為有效的十六進(jìn)制數(shù)字。
IsHexEncoding       確定字符串中的一個(gè)字符是否為十六進(jìn)制編碼。
IsWellFormedOriginalString   指示用于構(gòu)造此 Uri 的字符串是否格式良好,以及它是否不需要進(jìn)一步轉(zhuǎn)義。
IsWellFormedUriString   通過嘗試用字符串構(gòu)造一個(gè) URI 來指示字符串是否為格式良好的,并確保字符串不需要進(jìn)一步轉(zhuǎn)義。
MakeRelativeUri      確定兩個(gè) Uri 實(shí)例之間的差異。
TryCreate         已重載。 創(chuàng)建一個(gè)新的 Uri。在無法創(chuàng)建 Uri 時(shí)不引發(fā)異常。
UnescapeDataString   將字符串轉(zhuǎn)換為它的非轉(zhuǎn)義表示形式。

復(fù)制代碼
class Program
    {
        static void Main(string[] args)
        {
        

            Uri uri = new Uri("http://www.baidu.com:80/2013/123.html?id=1");
            UriHostNameType unt = Uri.CheckHostName("http://www.baidu.com");
            Console.WriteLine(unt.ToString());   //輸出Unknown    UriHostNameType 是一個(gè)枚舉,定義主機(jī)名類型

            Console.WriteLine(Uri.CheckSchemeName("http://www.baidu.com")); //輸出 False
            Console.WriteLine(Uri.CheckSchemeName("http"));     //輸出 True
            Console.WriteLine(Uri.CheckSchemeName("https"));    //輸出 True
            //Uri uri1 = new Uri("http://www.baidu.com");
            //Uri.Compare(uri,uri1);

            //Uri.EscapeDataString對(duì)冒號(hào)(:)、斜杠(/)、空格、中文、井號(hào)(#)都進(jìn)行了編碼,可對(duì)參數(shù)編碼
            Console.WriteLine(Uri.EscapeDataString("http://www.baidu.com:80/2013/123.html?id=1"));  //輸出 http%3A%2F%2Fwww.baidu.com%3A80%2F2013%2F123.html%3Fid%3D1     Uri轉(zhuǎn)義
            //Uri.EscapeUriString對(duì)空格進(jìn)行了編碼,也對(duì)中文進(jìn)行了編碼,但對(duì)冒號(hào)(:)、斜杠(/)和井號(hào)(#)未編碼,所以此方法可以用于網(wǎng)址進(jìn)行編碼,但不能對(duì)參數(shù)進(jìn)行編碼
            //Uri.EscapeUriString對(duì)URI的網(wǎng)址部分編碼,用Uri.EscapeDataString對(duì)URI中傳遞的參數(shù)進(jìn)行編碼。 
            Console.WriteLine(Uri.EscapeUriString("http://www.baidu.com:80/2013/123.html?id=1&你好"));//輸出 http://www.baidu.com:80/2013/123.html?id=1&%E4%BD%A0%E5%A5%BD
            
            string str = "http%3A%2F%2Fwww.baidu.com%3A80%2F2013%2F123.html%3Fid%3D1";
            Console.WriteLine(Uri.UnescapeDataString(str)); //輸出 http://www.baidu.com:80/2013/123.html?id=1 , 將Url還原成不轉(zhuǎn)義的形式

            Console.WriteLine(Uri.FromHex('A'));    //輸出 10  獲取16進(jìn)制數(shù)字的十進(jìn)制值
            Console.WriteLine(Uri.HexEscape('2'));  //輸出 %32 轉(zhuǎn)換它的等效十六進(jìn)制字符。 
            Console.WriteLine(Uri.IsHexDigit('F'));  //輸出True 確定指定的字符是否為有效的十六進(jìn)制數(shù)字。 

            int index = 0;
            if (Uri.IsHexEncoding("%75", index))
                Console.WriteLine("該編碼代表的字符是 :{0}", Uri.HexUnescape("%75", ref index));
            else
                Console.WriteLine("這不是16禁止編碼");

            //以下兩個(gè)實(shí)例方法GetLeftPart與GetComponents都用于獲取Uri中的一部分,可以是端口,方案,參數(shù)等等。
            Console.WriteLine(uri.GetComponents(UriComponents.Scheme,UriFormat.Unescaped)); //輸出 http   獲取Uri中的一部分,兩個(gè)參數(shù)都是枚舉
            Console.WriteLine(uri.GetLeftPart(UriPartial.Scheme));  //輸出 http://

            Uri uri1 = new Uri("Http://www.baidu.com");
            Console.WriteLine(uri.IsBaseOf(uri1));  //輸出 False
            Console.WriteLine(uri1.IsBaseOf(uri));  //輸出 True

            //TryCreate也可用于相對(duì)路徑轉(zhuǎn)絕對(duì)路徑,返回一個(gè)新的uri并且不成功時(shí)不報(bào)異常
            Uri uri2 = new Uri("http://www.baidu.com/a/b/c.html");
            Uri uri3;
            Uri.TryCreate(uri2,"../123.html",out uri3);
            Console.WriteLine(uri3);    //輸出 http://www.baidu.com/a/123.html

            Uri uri4 = uri2.MakeRelativeUri(uri3);
            Console.WriteLine(uri4);    //輸出..123/html
            //再來一個(gè)

            Uri uri5 = new Uri("http://www.baidu.com/a/b/d.html");
            Uri uri6 = new Uri("http://www.baidu.com/a/b/c.html");

            Uri uri7 = uri5.MakeRelativeUri(uri6);
            Console.WriteLine(uri7);    //輸出 c.html //這樣就表示目錄相同,文件名不同,相對(duì)于第一個(gè)調(diào)用Uri來說的

            //確定文件是否不需要轉(zhuǎn)義,沒特殊字符就不需要轉(zhuǎn)移
            //以下兩個(gè)方法基本一致,只是一個(gè)是靜態(tài)方法,一個(gè)是實(shí)例方法而已
            Console.WriteLine(Uri.IsWellFormedUriString("http://www.baidu.com", UriKind.Absolute));             //輸出 True UriKind是一個(gè)枚舉
            Console.WriteLine(Uri.IsWellFormedUriString("http://www.baidu.com/123.html?名字=張三", UriKind.Absolute));    //輸出 False    表示需要轉(zhuǎn)義
            
            Console.WriteLine(uri.IsWellFormedOriginalString());   //True 此 Uri 的字符串是否格式良好,以及它是否不需要進(jìn)一步轉(zhuǎn)義。 
            Uri uri8 = new Uri("http://www.baidu.com/123.html?名字=張三");
            Console.WriteLine(uri8.IsWellFormedOriginalString());   //輸出False 
            Console.ReadKey();
        }
    }
復(fù)制代碼

  有時(shí)間要看好點(diǎn),這個(gè)類還是很有用的。

  另附上一個(gè)常用的功能,相對(duì)Uri轉(zhuǎn)絕對(duì)Uri,這是是利用構(gòu)造函數(shù)實(shí)現(xiàn)的,傳入一個(gè)baseUri就能夠?qū)崿F(xiàn),如如下代碼:

復(fù)制代碼
        static void Main(string[] args)
        {
            Uri uri = new Uri("http://www./a/b/index.html");
            Uri uri2 = new Uri(uri,"../123.html");
            Console.WriteLine(uri2.ToString());     //輸出http://www./a/123.html

            Console.ReadKey();
        }
復(fù)制代碼

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多