在 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?