“aaaa”.StartsWith(“aaa”)返回false

时间:2013-03-21 12:33:45

标签: 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"));
在丹麦系统上执行时,

产生以下输出:

True
False
True
False
True
False

1 个答案:

答案 0 :(得分:22)

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

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

查看String StartsWith() issue with Danish text

示例:

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声称的内容。