在下面的代码块中,无法识别重音字母(我属于"否则")
StringBuilder sb = new StringBuilder();
foreach (char c in str) {
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_') {
sb.Append(c);
}
else
{
// if c is accented, i arrive here
}
如何忽略重音? 谢谢你的帮助
答案 0 :(得分:8)
指示指定的Unicode字符是分类为字母还是十进制数字。
if (char.IsLetterOrDigit(c) || c == '.' || c == '_') {
sb.Append(c);
}
对于任何字母,函数都返回true,包括带重音的字母。
答案 1 :(得分:2)
如何通过删除重音符号和变音符号来清理字符串?
public string RemoveAccentsAndDiacritics(string s)
{
return string.Concat(
s.Normalize(NormalizationForm.FormD)
.Where(c => System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) !=
System.Globalization.UnicodeCategory.NonSpacingMark));
}