为什么我从.NET的StartsWith中看到这种意外行为?

ggP*_*eti 8 .net c#

这一定是.NET漏洞,对吗?

"KonNy".StartsWith("Kon")返回false,而"KonNy".StartsWith("Ko")"KonN".StartsWith("Kon")返回true.

这里有什么我想念的吗?

Ama*_*dan 15

重复评论:

我不是特别知道.NET,但我怀疑你可能会观察到这种现象,如果StartsWith按照一个nny字母进行整理,例如匈牙利语.如果我是对的,如果你将整理改为中性,你的"虫子"就会消失.:)


Jon*_*eet 9

编辑:这是一个文化敏感问题,只在匈牙利文化中显示.摄制:

using System;
using System.Globalization;

class Test
{
    static void Main()        
    {
        foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
        {
            if (!"KonNy".StartsWith("Kon", false, culture))
            {
                Console.WriteLine(culture);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

hu
hu-HU
Run Code Online (Sandbox Code Playgroud)

如果您想要对文化不敏感的比较,请StringComparison.Ordinal按照usr的答案进行指定.