CSharp · Console
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, "_");
}
}