【问题标题】:Ignore accent letters in string comparison in Visual Studio在 Visual Studio 中的字符串比较中忽略重音字母
【发布时间】:2017-02-21 00:41:03
【问题描述】:

我是 Visual Studio 的新手,我正在尝试学习一些简单的任务。 我得到了一个比较两个字符串(last namefirst 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;
    }

感谢任何帮助!

【问题讨论】:

  • 您是否尝试过这里的解决方案 - stackoverflow.com/questions/20674577/…
  • 感谢您的回复。我已经尝试过这种方式 if (value1 != null && value2 != null && value1.Trim().Normalize(NormalizationForm.FormKD).Equals(value2.Trim().Normalize(NormalizationForm.FormKD))) {返回真; } 但它似乎也不起作用。
  • 我的意思是 RemoveDiacritics 方法。
  • 哦,谢谢,错过了那部分。我读过几篇类似的帖子,最终得到了上面的解决方案。但它适用于 RemoveDiacritics 方法。

标签: c# string compare normalize


【解决方案1】:

可能的答案之一是使用 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?

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2016-09-02
    • 2010-09-28
    • 2011-01-23
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多