PathExtensionVsSubString

CSharp · Console

/Program.cs

using System;
using System.IO; 
using System.Diagnostics; 

public static class StringExtension
{    
	    /// <summary>
        /// Get filename extension, not ext of . only returns empty string, mirrors Path.GetExtension not try/catch issues by metadataconsulting.blogspot.com
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string GetFileNameExtension(this string s)
        {
            string ext = "";
            int fileExtPos = s.LastIndexOf('.');
            if (fileExtPos > s.LastIndexOf('\\'))
            {
                ext = s.Substring(fileExtPos, s.Length - fileExtPos);
                if (ext.Length <= 1) ext = "";
            }
            else
                ext = "";
            return ext;
        }
}
					
public class Program
{
	
	
	public static string GetFileExtStringRef(ref string file) {
		
		//string ext="";
		int fileExtPos = file.LastIndexOf('.');
		if (fileExtPos >  file.LastIndexOf('\\'))
			return file.Substring(fileExtPos, file.Length - fileExtPos);
		else
			return "";
		
		
	}
	
	public static void Main()
	{
		
		//string file = @"c:\foo\bar.cat\cheese.exe.e.x";
		string file = "cheese.log.txt";
		Console.WriteLine("Inline String Manipulation"); 
		Stopwatch s = new Stopwatch();
		s.Start(); 
			string ext = ""; 
			int fileExtPos = file.LastIndexOf('.');
            if (fileExtPos > file.LastIndexOf('\\'))
            {
                ext = file.Substring(fileExtPos, file.Length - fileExtPos);
                if (ext.Length <= 1) ext = "";
            }
            else
                ext = "";
		s.Stop();
		Console.WriteLine(ext+ " in ticks "+ s.ElapsedTicks); 
		
		Console.WriteLine("Native Path.IO Get Extension"); 
		s.Reset();
		s.Start(); 		
			ext = Path.GetExtension(file); 
		s.Stop(); 
		Console.WriteLine(ext+ " in ticks "+ s.ElapsedTicks); 

		Console.WriteLine("String Extension call"); 
		s.Reset();
		s.Start(); 		
			ext = file.GetFileNameExtension();
		s.Stop(); 
		Console.WriteLine(ext+ " in ticks "+ s.ElapsedTicks); 

		Console.WriteLine("By Ref Method Call"); 		
		s.Reset();
		s.Start(); 		
			ext = GetFileExtStringRef(ref file);
		s.Stop(); 
		
		Console.WriteLine(ext+ " in ticks "+ s.ElapsedTicks); 
		
	}
}
;