Skip to content

Instantly share code, notes, and snippets.

@KANekT
Created May 3, 2018 13:02
Show Gist options
  • Save KANekT/1e2953f8c75dd9a2994c64c1711d7157 to your computer and use it in GitHub Desktop.
Save KANekT/1e2953f8c75dd9a2994c64c1711d7157 to your computer and use it in GitHub Desktop.
Склонение числительных в C#
public class DeclensionGenerator
{
/// <summary>
/// Возвращает слова в падеже, зависимом от заданного числа
/// </summary>
/// <param name="number">Число от которого зависит выбранное слово</param>
/// <param name="nominativ">Именительный падеж слова. Например "день"</param>
/// <param name="genetiv">Родительный падеж слова. Например "дня"</param>
/// <param name="plural">Множественное число слова. Например "дней"</param>
/// <returns></returns>
public static string Generate(int number, string nominativ, string genetiv, string plural) {
var titles = new[] {nominativ, genetiv, plural};
var cases = new[] {2, 0, 1, 1, 1, 2};
return titles[number % 100 > 4 && number % 100 < 20 ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
}
}
@FozerG
Copy link

FozerG commented Dec 12, 2023

1 яблоко, 1.5 яблока

Проверяешь если целое число - используешь способ выше, если float то используешь слово множественного числа

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment