Что? does.NET-это струна.Нормализовать сделать?
The статья MSDN в строке.Нормализовать государства просто:
возвращает новую строку, двоичное представление которой находится в определенной форме нормализации Юникода.
и иногда ссылаясь на"форму нормализации Юникода C."
Мне просто интересно, что это значит? Насколько эта функция полезна в реальных жизненных ситуациях?
4 ответа:
он гарантирует, что строки Юникода можно сравнить для равенства (даже если они используют разные кодировки Юникода).
От Unicode Standard приложение № 15:
по существу, алгоритм нормализации Юникода помещает все объединяющие метки в заданном порядке и использует правила декомпозиции и композиции для преобразования каждой строки в одну из форм нормализации Юникода. Затем будет выполнено двоичное сравнение преобразованных строк определите эквивалентность.
одно различие между формой 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) }
в Юникоде (составленный) символ может иметь либо уникальную кодовую точку, либо последовательность кодовых точек, состоящую из базового символа и его акцентов.
Википедия перечисляет в качестве примера вьетнамский ế (U+1EBF) и его разложенную последовательность U+0065 (e) U+0302 (circumflex accent) U+0301 (acute accent).
строку.Normalize () преобразует между 4 нормальными формами строку можно закодировать в Юникоде.
эта ссылка имеет хорошее объяснение:
http://unicode.org/reports/tr15/#Norm_Forms
из того, что я могу предположить, его так что вы можете сравнить две строки Юникода для равенства.