我是Visual Studio的新手,我正在尝试学习一些简单的任务。 我收到了一个比较两个字符串的代码(姓氏和名字)
private bool compareNames(String value1, String value2)
{
if (value1 != null && value2 != null && value1.Trim().ToLower(). Equals(value2.Trim().ToLower()))
{
return true;
}
return false;
}
上面的代码忽略区分大小写,但我要做的是也要忽略像ăîşéááö这样的特殊字符。
我尝试使用Normalize()执行此任务,但它似乎无法正常工作。
private bool compareNames(String value1, String value2)
{
if (value1 != null && value2 != null && value1.Trim().ToLower(). Equals(value2.Trim().ToLower()))
{
return true;
}
else if (value1 != null && value2 != null && value1.Trim().Normalize().Equals(value2.Trim().Normalize()))
{
return true;
}
return false;
}
感谢任何帮助!
答案 0 :(得分:0)
可能的答案之一是使用RemoveDiacritcs方法。
static string RemoveDiacritics(string text)
{
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();
foreach (var c in normalizedString)
{
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(c);
}
}
return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}
此处有更多信息:How do I remove diacritics (accents) from a string in .NET?