Подскажите склонение слов
Подскажите как можно склонять слова?
... 1 пользователь 2 пользователя 5 пользователей ... |
|
Мне бы на пример простой на JS
|
вас в гугле забанили?
//склонение окончаний
function declension(num, expressions) {
var result;
count = num % 100;
if (count >= 5 && count <= 20) {
result = expressions['2'];
} else {
count = count % 10;
if (count == 1) {
result = expressions['0'];
} else if (count >= 2 && count <= 4) {
result = expressions['1'];
} else {
result = expressions['2'];
}
}
return result;
}
alert ( declension(1, ['пользователь','пользователя','пользователей']) );
alert ( declension(2, ['пользователь','пользователя','пользователей']) );
alert ( declension(5, ['пользователь','пользователя','пользователей']) );
|
Вы хотите склонять произвольные слова?
|
Kolyaj,
1 пользователь 2 пользователя 5 пользователей |
Ну тогда вам написали решение.
|
Насколько применимо вообще - не знаю, но задачу, под которую писал, функция решила:
function sklon(num, basic, ed, do4, posle5)
// (число, основа, окончание для ед.ч., для NNN2...NNN4, NNN5...NNN0)
{
var slovco = basic;
if(num-Math.floor(num) != 0) slovco += do4;
else
{
//не знаю лучшего способа для обрезания :)
var sht;
if(num>=100)
{
sht = num*0.01;
sht = Math.round(sht);
sht = num - sht*100;
}
else sht = num;
if(sht>=5 && sht<=20) slovco+=posle5;
else
{
if(sht%10 == 1) slovco+=ed;
else
{
if(sht%10 > 4) slovco+=posle5;
else
{
if(sht%10 == 0) slovco+=posle5;
else
{
slovco+=do4;
}
}
}
}
}
return slovco;
}
for(var i=0; i<=1001; i++)
{
var word = sklon(i, 'пользовател', 'ь', 'я', 'ей');
alert(i+' '+word);
}
|
| Часовой пояс GMT +3, время: 12:15. |