【问题标题】:How to break url into multiple string parts如何将url分成多个字符串部分
【发布时间】:2015-11-16 08:34:32
【问题描述】:

我有一个包含 SSRS Report 完整路径的 url。在 C# 中,我想打破多个字符串中的 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

【问题讨论】:

    标签: asp.net visual-studio-2010 c#-4.0


    【解决方案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();
    }
    

    您的 URL 将在比您指定的更多位置分隔,但您应该这样做。您可以将第一个=符号所在的字符串中的最后一部分删除,然后执行字符串分离。

    希望对你有所帮助。

    【讨论】:

    • 什么是 ReplaceSubstrings replace = new ReplaceSubstrings();
    • 用于创建对象和调用构造函数。相当于:Class1 obj = new Class1();
    【解决方案2】:

    这是使用 Uri 类拆分 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
    

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多