Подтвердить что ты не робот

"aaaa".StartsWith( "aaa" ) возвращает false

Если это не ошибка, может ли кто-нибудь объяснить причину такого поведения? Действительно, кажется, что каждое нечетное число букв вернет 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"));

дает следующий результат при выполнении в датской системе:

True
False
True
False
True
False
4b9b3361

Ответ 1

Это, безусловно, связано с вашей нынешней культурой. Вы можете быть на датском языке, в котором 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"));
        }
    }
}

Отпечатает то, что утверждает ОП.