2016-07-01 6 views
0

*編集:これはWindowsではなくMono 4.2.2 Linux(C# Online Compiler)で行われます。Uriクラスがプロトコル相対URLを処理しません

プロトコル相対URLを解析してホスト名などを取得したいと思います。C#Uriクラスがプロトコルに関連したURLを処理できなかったので、今度は "http:"を先頭に挿入します。より良い方法や良いライブラリがあれば教えてください。

// Protocol-relative URL 
    var uriString = "//www.example.com/bluh/bluh.css"; 
    var uri = new Uri(uriString); 
    Console.WriteLine(uriString); // "//www.example.com/bluh/bluh.css" 
    Console.WriteLine(uri.Host); // "Empty" string 

    // Absolute URL 
    var fixUriString = uriString.StartsWith("//") ? "http:" + uriString : uriString; 
    var fixUri = new Uri(fixUriString); 
    Console.WriteLine(fixUriString); // "http://www.example.com/bluh/bluh.css" 
    Console.WriteLine(fixUri.Host); // "www.example.com" 
+0

おそらくあなた自身の 'UriParser'を書くことができます - https://msdn.microsoft.com/en-us/library/system.uriparser.aspx – Blorgbeard

答えて

2

これは動作します:それはまたUri(string)コンストラクタを使用して私のために働いた

Uri uri = null; 
    if(Uri.TryCreate("//forum.xda-developers.com/pixel-c", UriKind.Absolute, out uri)) 
    { 
     Console.WriteLine(uri.Authority); 
     Console.WriteLine(uri.Host); 
    } 

戻り

forum.xda-developers.com 
forum.xda-developers.com 

を。

+0

ありがとう!あなたは、私がLinux上でモノが異なって動作することを実現させました。私はWindowsに切り替えた後、Uri(文字列)は完全に動作します。 – Tsukuru

関連する問題