Подскажите склонение слов
Подскажите как можно склонять слова?
... 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, время: 18:00. |