返回一个新的字符串,其二进制表示形式采用特定的Unicode规范化形式。
有时也指“ Unicode规范化形式C”。
我只是想知道,这是什么意思?此功能在现实生活中如何有用?
返回一个新的字符串,其二进制表示形式采用特定的Unicode规范化形式。
有时也指“ Unicode规范化形式C”。
我只是想知道,这是什么意思?此功能在现实生活中如何有用?
Answers:
表单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 letters+accents
// the rest removes those accents (and other non-spacing characters)
// and creates a new string from the remaining chars
}