Sanitize File Name

CSharp · Console

/Program.cs

using System;
using System.IO;
using System.Text.RegularExpressions;

public class Program
{
	public static void Main()
	{
		string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
		string expected = "_M_a_ry_ h_ad_ a_ li_tt_le_ la_mb._";
		
		var valid = MakeValidFileName(illegal);
		
		Console.WriteLine(valid == expected);
	}

	private static string MakeValidFileName(string name)
	{
		var invalidFileNameChars = new string(Path.GetInvalidFileNameChars());
		string invalidChars = Regex.Escape(invalidFileNameChars);
		string invalidRegStr = string.Format(@"([{0}]*\.+$)|([{0}]+)", invalidChars);

		return Regex.Replace(name, invalidRegStr, "_");
	}
}
;