Я использую этот метод для удаления диакритических знаков из моих строк:
static string RemoveAccents(string input)
{
string normalized = input.Normalize(NormalizationForm.FormKD);
StringBuilder builder = new StringBuilder();
foreach (char c in normalized)
{
if (char.GetUnicodeCategory(c) !=
UnicodeCategory.NonSpacingMark)
{
builder.Append(c);
}
}
return builder.ToString();
}
но этот метод оставляет đ как đ и не изменяет его на d, даже при том, что d является своим основным символом. можно попробовать его этой входной строкой "æøåáâăДĺćЗčВęЙěíîďđńňóôőФřůгűüýţ"
Что является настолько особенным в букве đ?
" D со штрихом "(Википедия) используется на нескольких языках и, кажется, считается отдельной буквой во всех из них - и поэтому остается неизменной.
Должен признаться, что я не уверен, почему это работает, но похоже, что да
var str = "æøåáâăäĺćçčéęëěíîďđńňóôőöřůúűüýţ";
var noApostrophes = Encoding.ASCII.GetString(Encoding.GetEncoding("Cyrillic").GetBytes(str));
=> "aoaaaaalccceeeeiiddnnooooruuuuuyt"