"aaaa".StartsWith("aaa")返回false

son*_*ard 17 c# string startswith

如果这不是一个错误,那么有人可以解释这种行为背后的原因吗?事实上,似乎每个奇数个字母都会返回false:

string test = "aaaaaaaaaaaaaaaaaaaa";
Console.WriteLine(test.StartsWith("aa"));
Console.WriteLine(test.StartsWith("aaa"));
Console.WriteLine(test.StartsWith("aaaa"));
Console.WriteLine(test.StartsWith("aaaaa"));
Console.WriteLine(test.StartsWith("aaaaaa"));
Console.WriteLine(test.StartsWith("aaaaaaa"));
Run Code Online (Sandbox Code Playgroud)

在丹麦系统上执行时输出后的输出:

True
False
True
False
True
False
Run Code Online (Sandbox Code Playgroud)

Kek*_*Kek 22

这当然归功于您目前的文化.您可能是丹麦语,其中aa被视为一封信.如果你尝试改变文化..或案件,它应该工作.

我想我记得匈牙利文化和字母联想的类似行为

看一下使用丹麦语文本的String StartsWith()问题

例:

using System;
using System.Globalization;

namespace Demo
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("da-DK");
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
            string test = "aaaaaaaaaaaaaaaaaaaa";
            Console.WriteLine(test.StartsWith("aa"));
            Console.WriteLine(test.StartsWith("aaa"));
            Console.WriteLine(test.StartsWith("aaaa"));
            Console.WriteLine(test.StartsWith("aaaaa"));
            Console.WriteLine(test.StartsWith("aaaaaa"));
            Console.WriteLine(test.StartsWith("aaaaaaa"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这打印出OP声称的内容.

  • 执行`Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("hu-hu");`在他的代码仍然导致所有行产生'True`之前. (4认同)
  • 实际上,在丹麦语中,"aa"对应于单个字母"å",这就是每个奇数个数字导致错误的原因.:) (3认同)