private static string Strip(string name)
{
int rank = 0;
string s = name.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
bool lastIsUnderscore = false;
for (int i = 0; i < s.Length; i++)
{
if (CharIsAllowed(s[i]))
{
sb.Append(s[i]);
lastIsUnderscore = false;
if (Char.IsLetterOrDigit(s[i]))
rank++;
}
else if (!lastIsUnderscore && Char.GetUnicodeCategory(s[i]) != UnicodeCategory.NonSpacingMark)
{
sb.Append(PlaceholderSymbol);
lastIsUnderscore = true;
}
}
if (rank > 0)
return (sb.ToString().Normalize(NormalizationForm.FormC));
return string.Empty;
}