Одно из различий между формой C и формой D состоит в том, как представлены буквы с ударениями: форма C использует одну кодовую точку буквы с ударением, тогда как форма D разделяет ее на букву и акцент.
ДляНапример, «а» может быть кодовой точкой 224 («латинская строчная буква A с могилой») или кодовой точкой 97 («латинская строчная буква A»), за которой следует кодовая точка 786 («объединение серьезного акцента»).
Побочным эффектом является то, что это позволяет легко создать метод «удалить акценты».
public static string RemoveAccents(string input)
{
return new string(
input
.Normalize(System.Text.NormalizationForm.FormD)
.ToCharArray()
.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
.ToArray());
// the normalization to FormD splits accented letters in accents+letters
// the rest removes those accents (and other non-spacing characters)
}