Были времена, когда сайты делали по принципу «лишь бы работал». Но на сегодняшний день Интернет стал гораздо более требователен не только к сервису, но и к удобству и его использования. Одни и те же сервисы присутствуют на множестве конкурирующих сайтов. В то время как качество сервисов часто почти одинаковое, сайты борются за аудиторию в первую очередь удобным и красивым представлением сервиса.
От этого краткого философского вступления перейду к сугубо практической части — простому методу склонения слов по числам, который придает сайту «гладкости». Хватит отображать на своих страницах фразы типа «22 слон» и «91 копыт». Давайте склонять правильно! Метод ниже поможет легко это сделать (.NET):
public static string FormatCount(int count, string str1, string str234, string strMore)
{
int b = count % 100;
if (b > 4 && b < 21) return strMore;
int a = count % 10;
return ( a == 1? str1: (a == 2 || a == 3 || a == 4)? str234: strMore);
}
Если дополнить его методом:
public static string FormatCountTemplate(int count, string str1, string str234, string strMore)
{
return string.Format(FormatCount(count, str1, str234, strMore), count);
}
, то пример использования будет такой:
for (int c = 0; c < 125; c++)
{
string result = string.Format(«В прошлом году {0}», FormatCountTemplate(c, «продан {0} слон», «продано {0} слона», «продано {0} слонов»));
Console.WriteLine(result);
}
Надеюсь, пост будет полезен и позволит сделать чей-нибудь сайт лучше.
От этого краткого философского вступления перейду к сугубо практической части — простому методу склонения слов по числам, который придает сайту «гладкости». Хватит отображать на своих страницах фразы типа «22 слон» и «91 копыт». Давайте склонять правильно! Метод ниже поможет легко это сделать (.NET):
public static string FormatCount(int count, string str1, string str234, string strMore)
{
int b = count % 100;
if (b > 4 && b < 21) return strMore;
int a = count % 10;
return ( a == 1? str1: (a == 2 || a == 3 || a == 4)? str234: strMore);
}
Если дополнить его методом:
public static string FormatCountTemplate(int count, string str1, string str234, string strMore)
{
return string.Format(FormatCount(count, str1, str234, strMore), count);
}
, то пример использования будет такой:
for (int c = 0; c < 125; c++)
{
string result = string.Format(«В прошлом году {0}», FormatCountTemplate(c, «продан {0} слон», «продано {0} слона», «продано {0} слонов»));
Console.WriteLine(result);
}
Надеюсь, пост будет полезен и позволит сделать чей-нибудь сайт лучше.