Something that seems quite easy to do is to parse a url. This is actually very easy in c#. However if you search on google you will see all sorts of solutions to it. Using regular expressions and various other ways to do it. Most of which I have always found really ugly. If your going for this method you really have to think about the fact that it has been a problem now for over 20 years and there must be a more common solution.

Some of these extreme methods may include something like this which don't actually work correctly.

  • What about the encoding?
  • What about the parameters?

    Protected Function ExtractDomainFromURL(ByVal sURL As String) As String
          Dim rg As New Regex("://(?<host>([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]+[a-z])")
    
          If rg.IsMatch(sURL) Then
                  Return rg.Match(sURL).Result("${host}")
          Else
                  Return String.Empty
          End If
    End Function
    

    You can do this in c# by adding a reference to System.Web and using the following code.

    class Program
    {
      static void Main(string[] args)
      {
          Uri tmp = new Uri("http://www.google.co.uk/search?hl=en&q=parsing+a+url+in+c%23&aq=f&aqi=g1g-j9&aql=&oq=");
    
          Console.WriteLine("Protocol: {0}", tmp.Scheme);
          Console.WriteLine("Host: {0}", tmp.Host);
          Console.WriteLine("Path: {0}", HttpUtility.UrlDecode(tmp.AbsolutePath));
          Console.WriteLine("Query: {0}", tmp.Query);
          NameValueCollection Parms = HttpUtility.ParseQueryString(tmp.Query);
          Console.WriteLine("Parms: {0}", Parms.Count);
          foreach (string x in Parms.AllKeys)
              Console.WriteLine("\tParm: {0} = {1}", x, Parms[x]);
    
          Console.ReadLine();
      }
    }
    




Last Modified: 20 February 2017

Releated Posts


2011-10-27 - CSharp - Number Of Cores and Processors
2011-10-04 - CSharp - Thread Queue Example
2011-09-29 - CSharp - Background Thread / Task
2011-09-17 - CSharp - Lookup Hostname
2011-08-29 - C Sharp - StopWatch, The high resolution timer
2011-08-29 - CSharp - IsGuid
2011-08-26 - CSharp - Convert Between Meters and Feet
2011-08-23 - CSharp - ThreadPool and Windows Forms
2011-08-10 - C Sharp - MD5Sum / SHASum
2011-07-22 - CSharp - Fibonacci sum
2011-07-13 - CSharp - Palindrome
2011-07-11 - CSharp - The string Reverse
2011-07-10 - CSharp - Interviews FizzBuzz
2011-06-27 - CSharp - HowTo Parse a URL
2011-06-22 - CSharp - Extending any class
2011-06-13 - ASPNET - Login by username or email
2011-05-12 - CSharp - ASPNET Logoff
2011-03-07 - C Sharp - Windows Logoff
2011-03-02 - ASPNET - Dynamic Controls
2011-03-01 - C Sharp - Resize an image by size of height
2011-02-23 - C Sharp / MSSQL Get inserted value of NEWSEQUENTIALID()
2011-02-10 - CSharp - Shutdown or reboot windows
2011-02-10 - CSharp - Wake on Lan (WOL) Packet
2011-02-06 - C Sharp - Gridview Bound Yes No
2011-02-05 - MSSQL - Levenshtein
2011-01-30 - MSSQL - Enabling CLR Functions
2011-01-30 - MSSQL - Adding MD5 checksum support
2011-01-30 - MSSQL - RegEx Support
2011-01-30 - MSSQL - Adding SHASum support