CultureInfo.Name属性的最大长度

时间:2011-02-01 12:49:08

标签: c#-4.0 .net-4.0

也许有人知道,.NET Framework 4.0中CultureInfo.Name属性的最大长度是多少。

3 个答案:

答案 0 :(得分:3)

答案:84

文档:(感谢@lethek发表评论) http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.cultureandregioninfobuilder%28v=vs.100%29.aspx

我能够使用下面代码为84个字符的CultureAndRegionInfoBuilder类创建一个新文化。

CultureAndRegionInfoBuilder不允许使用超过84个字符的名称。要获得84个字符,您需要确保以“ - ”分隔的每个部分必须为8个字符或更少。你不能只创建一个名为“ThisIsLongerThan8Characters”的文化,因为它不超过8个字符而没有分隔符。 (请注意,我认为您可以以相同的方式使用“_”,但我没有尝试过)

要使以下代码正常工作,您需要引用sysglobl程序集并导入System.Globalization命名空间。

以下代码尝试在开始和结束时取消注册文化。注册完成后,我加载CultureInfo,格式化日期并显示Name和DisplayName。

希望这有用。

string cultureName = "qwertyui-12345678-qwertyui-12345678-qwertyui-12345678-qwertyui-12345678-qwertyui-123";
Console.WriteLine( "MAX LENGTH: " + cultureName.Length );
try {
    CultureAndRegionInfoBuilder.Unregister( cultureName );
} catch {
    Console.WriteLine( "Cannot remove culture" );
}

CultureAndRegionInfoBuilder builder = new CultureAndRegionInfoBuilder( cultureName , CultureAndRegionModifiers.None );

CultureInfo ci = new CultureInfo( "en-AU" );
RegionInfo ri = new RegionInfo( "US" );

builder.LoadDataFromCultureInfo( ci );
builder.LoadDataFromRegionInfo( ri );
builder.Register();

CultureInfo info = new CultureInfo( cultureName );

Console.WriteLine( DateTime.Now.ToString( info.DateTimeFormat.LongDatePattern ) );
Console.WriteLine( info.Name );
Console.WriteLine( info.DisplayName );

try {
    CultureAndRegionInfoBuilder.Unregister( cultureName );
} catch {
    Console.WriteLine( "Cannot remove culture" );
}

答案 1 :(得分:1)

它11.这是代码:

var count = CultureInfo.GetCultures(CultureTypes.AllCultures)
                       .Select(ci => ci.Name.Length)
                       .Max();

答案 2 :(得分:0)

根据以下代码:

    public static void Test()
    {
        var culturesNames = from c in CultureInfo.GetCultures(CultureTypes.AllCultures)
                            select new { c.DisplayName, c.DisplayName.Length, c.Name };


        foreach (var ci in culturesNames.OrderBy((o) => o.Length))
        {
            Console.WriteLine("{0} : {2} {1}", ci.DisplayName, ci.Length, ci.Name);
        }
    }

最大长度为50。 不要忘记开发人员可以创建自定义文化信息。