2015-11-16 89 views
2

我有一個保存了我的SSRS報告完整路徑的url。在C#我想打破的URL在多個字符串如何將url拆分爲多個字符串部分

http://Mydatabase-live/ReportServer?%2fADMIN%2fSTATS+-+SCHEDULE&TEAMNM=2015 TERRIER JV&rs:Command=Render&rs:Format=PDF 

在這裏,我要打破這個網址到部分1 http://Mydatabase-live/ReportServer部分2 ADMIN/STATS-SCHEDULE和部分3 TEAMNM

回答

1

我想到了這一點,一個辦法要做到這一點是爲程序定義一些分隔符以知道在哪裏破壞URL。

在我們這樣做之前,我們需要先替換特殊字符。

讓我們開始:

string searchFor; 
string replaceWith; 

static void Main(string[] args) 
{ 
    // First we need to replace the special characters: 
    ReplaceSubstrings replace = new ReplaceSubstrings(); 
    string s = "http://Mydatabase-live/ReportServer?%2fADMIN%2fSTATS+-+SCHEDULE&TEAMNM=2015 TERRIER JV&rs:Command=Render&rs:Format=PDF"; 

    // We need to replace: 
    // "%2f" with "/" 
    // "+-+" with "-" 

    // using System.Text.RegularExpressions 
    replace.searchFor = "%2f"; 
    replace.replaceWith = "/"; 
    s = Regex.Replace(s, replace.searchFor); 

    replace.searchFor = "+-+"; 
    replace.replaceWith = "-"; 
    s = Regex.Replace(s, replace.searchFor); 

    // Your URL will now look like this: 

    Console.WriteLine(s); 
    // Output: http://Mydatabase-live/ReportServer?/ADMIN/STATS-SCHEDULE&TEAMNM=2015 TERRIER JV&rs:Command=Render&rs:Format=PDF 

    // Add the delimiters 
    char[] delimiters = {'?', '&', '='}; 
    string[] words = s.Split(delimiters); 

    foreach (string s in words) 
    { 
     System.Console.WriteLine(s); 
    } 
    // Output: 
    // http://Mydatabase-live/ReportServer 
    // /ADMIN/STATS-SCHEDULE 
    // TEAMNM 
    // 2015 TERRIER JV 
    // rs:Command 
    // Render 
    // rs:Format 
    // PDF 

    // Keep the console window open in debug mode. 
    Console.WriteLine("Press any key to exit"); 
    Console.ReadKey(); 
} 

您的網址將在更多的地方比你指定的分離,但是這是你應該怎麼做。您可以從第一個=標誌所在的字符串中刪除最後一部分,然後執行字符串分隔。

我希望這對你有所幫助。

+0

什麼是ReplaceSubstrings replace = new ReplaceSubstrings(); –

+0

它用於創建對象並調用構造函數。它等同於:'Class1 obj = new Class1();' – Krayen

1

這是使用Uri Class拆分URL的動態方法。 Uri類具有獲取絕對路徑,查詢等功能。您可以使用它們並構建您的需求。

 string path = "http://Mydatabase-live/ReportServer?%2fADMIN%2fSTATS+-+SCHEDULE&TEAMNM=2015 TERRIER JV&rs:Command=Render&rs:Format=PDF"; 
     Uri uri = new Uri(path); 
     Console.WriteLine(uri.AbsolutePath); //Absolute path 
     Console.WriteLine(uri.Query); //Query