Максимальная длина свойства CultureInfo.Name - PullRequest
3 голосов
/ 01 февраля 2011

Может быть, кто-то знает, какова максимальная длина свойства CultureInfo.Name в .NET Framework 4.0.

Ответы [ 3 ]

3 голосов
/ 24 марта 2011

Ответ: 84

Документация: (спасибо @lethek за комментарий) http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.cultureandregioninfobuilder%28v=vs.100%29.aspx

Мне удалось создать новую культуру с помощью класса CultureAndRegionInfoBuilder длиной 84 символа с приведенным нижеcode.

CultureAndRegionInfoBuilder не позволяет использовать имя длиной более 84 символов.Чтобы получить 84 символа, вам нужно убедиться, что каждая часть, которую вы разделяете "-", должна содержать не более 8 символов.Вы не можете просто создать культуру под названием «ThisIsLongerThan8Characters», потому что она длиннее 8 символов без разделителя.(Обратите внимание, что я думаю, что вы можете использовать «_» таким же образом, но я не пробовал его)

Чтобы заставить работать следующий код, вам нужно сослаться на сборку sysglobl и импортировать System.Globalization namespace.

Приведенный ниже код пытается отменить регистрацию культуры в начале и в конце.После завершения регистрации я загружаю CultureInfo, форматирую дату и отображаю имя и отображаемое имя.

Надеюсь, это полезно.

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 голос
/ 01 февраля 2011

Это 11. Вот код:

var count = CultureInfo.GetCultures(CultureTypes.AllCultures)
                       .Select(ci => ci.Name.Length)
                       .Max();
0 голосов
/ 01 февраля 2011

По следующему коду:

    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. Не забывайте, что разработчик может создать собственную информацию о культуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...