如果这不是bug,那么谁能解释这种行为背后的原因呢?实际上,似乎每个奇数个字母都会返回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
发布于 2013-03-21 20:36:51
这当然要归功于你当前的文化。你可能是丹麦人,其中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"));
}
}
}
这将打印操作员所声称的内容。
https://stackoverflow.com/questions/15547663
复制相似问题