18

如果这不是错误,那么任何人都可以解释这种行为背后的原因吗?确实,似乎每个奇数个字母都会返回 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
4

1 回答 1

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"));
        }
    }
}

这打印了 OP 声称的内容。

于 2013-03-21T12:36:51.367 回答