在 Visual Studio 中忽略字符串比较中的重音字母
Ignore accent letters in string comparison in Visual Studio
我是 Visual Studio 的新手,我正在尝试学习一些简单的任务。
我得到了一个比较两个字符串的代码 (last name and first name)
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;
}
感谢任何帮助!
可能的答案之一是使用 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?
我是 Visual Studio 的新手,我正在尝试学习一些简单的任务。 我得到了一个比较两个字符串的代码 (last name and first name)
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;
}
感谢任何帮助!
可能的答案之一是使用 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?