using System.Globalization;
public static void Main()
Console.WriteLine("Héllo-Wïrld");
Console.WriteLine("Héllo-Wïrld".NormalizeDiacritics());
public static class StringExtensions
public static string NormalizeDiacritics(this string text)
if (text == null) return null;
var stringBuilder = new StringBuilder();
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory == UnicodeCategory.NonSpacingMark) continue;
var a = c.ToString().Normalize(NormalizationForm.FormKD).ToCharArray();
if ((a[0] >= '0' && a[0] <= '9') || (a[0] >= 'A' && a[0] <= 'Z') || (a[0] >= 'a' && a[0] <= 'z') || a[0] == '-' || a[0] == '_')
stringBuilder.Append(a[0]);
return stringBuilder.ToString().Replace("&", " ").Replace("'", " ");