CultureInfo.Name 属性的最大长度

msi*_*msi 4 .net-4.0 c#-4.0

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

jww*_*art 6

答案: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" );
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案 - 其他答案不正确。MSDN 明确指出最大可能的长度为 84 个字符(请参阅此页面的备注部分:http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.cultureandregioninfobuilder%28v=vs.100%29 .aspx) (2认同)