如何在c#中比较l和ł(波兰语字符)以返回true

问题描述 投票:0回答:1

我正在尝试比较以下两个字符 l 和 ł 并让 c# 返回 true

即我有 Przesyłka 这个词,想与 Przesylka 进行字符串比较

我尝试了以下方法,但它们都返回 false

public static void Main()
{
    Console.WriteLine("l".Equals("ł", StringComparison.InvariantCulture));
    Console.WriteLine("l".Equals("ł", StringComparison.Ordinal));
    Console.WriteLine("l".Equals("ł", StringComparison.OrdinalIgnoreCase));
    Console.WriteLine("l".Equals("ł", StringComparison.InvariantCultureIgnoreCase));
    Console.WriteLine("l".Equals(RemoveDiacritics("ł"), StringComparison.InvariantCulture));
}

//https://stackoverflow.com/a/368850/2987066
static string RemoveDiacritics(string text)
{
  return string.Concat( 
      text.Normalize(NormalizationForm.FormD)
      .Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch)!=
                                    UnicodeCategory.NonSpacingMark)
    ).Normalize(NormalizationForm.FormC);
}

正如你所看到的,我也尝试了这个 stackoverflow 答案 的解决方法,但它也返回了 false。

有没有办法在c#中以返回true的方式比较这两个字符?

c# equals string-comparison
1个回答
0
投票

这些相等性检查彼此不相等的原因是因为虽然 l 和 ł 看起来相似,但它们实际上是完全不同的字母

© www.soinside.com 2019 - 2024. All rights reserved.