小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

System.Uri類

 ThinkTank_引擎 2016-01-14

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

一、屬性

AbsolutePath   獲取 URI 的絕對路徑。
AbsoluteUri     獲取絕對 URI。
Authority      獲取服務(wù)器的域名系統(tǒng) (DNS) 主機(jī)名或 IP 地址和端口號。
DnsSafeHost   獲得可安全用于 DNS 解析的未轉(zhuǎn)義主機(jī)名。
Fragment     獲取轉(zhuǎn)義 URI 片段。
Host        獲取此實例的主機(jī)部分。
HostNameType  獲取 URI 中指定的主機(jī)名的類型。
IsAbsoluteUri   獲取一個值,該值指示 Uri 實例是否為絕對 URI。
IsDefaultPort   獲取一個值,該值指示 URI 的端口值是否為此方案的默認(rèn)值。
IsFile       獲取一個值,該值指示指定的 Uri 是否為文件 URI。
IsLoopback     獲取一個值,該值指示指定的 Uri 是否引用了本地主機(jī)。
IsUnc       獲取一個值,該值指示指定的 Uri 是否為統(tǒng)一命名約定 (UNC) 路徑。
LocalPath     獲取文件名的本地操作系統(tǒng)表示形式。
OriginalString   獲取傳遞給 Uri 構(gòu)造函數(shù)的原始 URI 字符串。
PathAndQuery   獲取用問號 (?) 分隔的 AbsolutePath 和 Query 屬性。
Port         獲取此 URI 的端口號。
Query       獲取指定 URI 中包括的任何查詢信息。
Scheme      獲取此 URI 的方案名稱。
Segments     獲取包含構(gòu)成指定 URI 的路徑段的數(shù)組。
UserEscaped     指示 URI 字符串在創(chuàng)建 Uri 實例之前已被完全轉(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ī)則比較兩個 URI 的指定部分。
EscapeDataString    將字符串轉(zhuǎn)換為它的轉(zhuǎn)義表示形式。
EscapeUriString     將 URI 字符串轉(zhuǎn)換為它的轉(zhuǎn)義表示形式。
FromHex          獲取十六進(jìn)制數(shù)字的十進(jìn)制值。
GetComponents     使用特殊字符的指定轉(zhuǎn)義,獲取當(dāng)前實例的指定部分。
GetLeftPart        獲取 Uri 實例的指定部分。
GetObjectData       返回序列化當(dāng)前實例所需的數(shù)據(jù)。
HexEscape         將指定的字符轉(zhuǎn)換它的等效十六進(jìn)制字符。
HexUnescape       將字符的指定十六進(jìn)制表示形式轉(zhuǎn)換為字符。
IsBaseOf         確定當(dāng)前的 Uri 實例是否為指定 Uri 實例的基。
IsHexDigit        確定指定的字符是否為有效的十六進(jìn)制數(shù)字。
IsHexEncoding       確定字符串中的一個字符是否為十六進(jìn)制編碼。
IsWellFormedOriginalString   指示用于構(gòu)造此 Uri 的字符串是否格式良好,以及它是否不需要進(jìn)一步轉(zhuǎn)義。
IsWellFormedUriString   通過嘗試用字符串構(gòu)造一個 URI 來指示字符串是否為格式良好的,并確保字符串不需要進(jìn)一步轉(zhuǎn)義。
MakeRelativeUri      確定兩個 Uri 實例之間的差異。
TryCreate         已重載。 創(chuàng)建一個新的 Uri。在無法創(chuàng)建 Uri 時不引發(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 是一個枚舉,定義主機(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對冒號(:)、斜杠(/)、空格、中文、井號(#)都進(jìn)行了編碼,可對參數(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對空格進(jìn)行了編碼,也對中文進(jìn)行了編碼,但對冒號(:)、斜杠(/)和井號(#)未編碼,所以此方法可以用于網(wǎng)址進(jìn)行編碼,但不能對參數(shù)進(jìn)行編碼
            //Uri.EscapeUriString對URI的網(wǎng)址部分編碼,用Uri.EscapeDataString對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禁止編碼");

            //以下兩個實例方法GetLeftPart與GetComponents都用于獲取Uri中的一部分,可以是端口,方案,參數(shù)等等。
            Console.WriteLine(uri.GetComponents(UriComponents.Scheme,UriFormat.Unescaped)); //輸出 http   獲取Uri中的一部分,兩個參數(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也可用于相對路徑轉(zhuǎn)絕對路徑,返回一個新的uri并且不成功時不報異常
            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
            //再來一個

            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 //這樣就表示目錄相同,文件名不同,相對于第一個調(diào)用Uri來說的

            //確定文件是否不需要轉(zhuǎn)義,沒特殊字符就不需要轉(zhuǎn)移
            //以下兩個方法基本一致,只是一個是靜態(tài)方法,一個是實例方法而已
            Console.WriteLine(Uri.IsWellFormedUriString("http://www.baidu.com", UriKind.Absolute));             //輸出 True UriKind是一個枚舉
            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ù)制代碼

  有時間要看好點,這個類還是很有用的。

  另附上一個常用的功能,相對Uri轉(zhuǎn)絕對Uri,這是是利用構(gòu)造函數(shù)實現(xiàn)的,傳入一個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ù)制代碼

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多