Cклонение существительных после числительных в С#

Pencil

Современный пользователь любит умные приложения, умеющие доносить информацию в максимально удобочитаемой и воспринимаемой форме. Такие фразы как «осталось 2 дней» ужасно раздражают такого пользователя. Каждое нормальное приложение должно уметь склонять существительные после числительных. Далее хочу представить решение такой задачи на C#.

Склонением занимается статический метод GetDeclension («declension» — с английского переводится «склонение»):

    public static class Helper
    {
        /// <summary>
        /// Возвращает слова в падеже, зависимом от заданного числа 
        /// </summary>
        /// <param name="number">Число от которого зависит выбранное слово</param>
        /// <param name="nominativ">Именительный падеж слова. Например "день"</param>
        /// <param name="genetiv">Родительный падеж слова. Например "дня"</param>
        /// <param name="plural">Множественное число слова. Например "дней"</param>
        /// <returns></returns>
        public static string GetDeclension(int number, string nominativ, string genetiv, string plural)
        {
            number = number % 100;
            if (number >= 11 && number <= 19)
            {
                return plural;
            }

            var i = number % 10;
            switch (i)
            {
                case 1:
                    return nominativ;
                case 2:
                case 3:
                case 4:
                    return genetiv;
                default:
                    return plural;
            }

        }   
    }

Все очень просто — передаем в метод число от которого зависит склонение, и формы слова. Пример использования:

Console.WriteLine("0 {0}", Helper.GetDeclension(0, "день", "дня", "дней"));
Console.WriteLine("1 {0}", Helper.GetDeclension(1, "день", "дня", "дней"));
Console.WriteLine("2 {0}", Helper.GetDeclension(2, "день", "дня", "дней"));

Для такого кода получаем следующий результат:

0 дней
1 день
2 дня

Вот и все. Пользуйтесь на здоровье:)

3 комментариев

  1. tashido:

    Спасибо!

  2. Александр Иванович:

    Спасибо! Самому было делать лень :) . Ваша программа заработала сразу. Теперь логи выглядят элегантно.

  3. Александр:

    Спасибо, полезный код)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>