|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Rookin 2:5020/238.13 10 Jan 2002 13:21:24 To : Dmitry M. Gavrin Subject : Прошло день|дня|дней or год|лет -------------------------------------------------------------------------------- 06 Jan 02 06:24, Dmitry M. Gavrin wrote to Всем: DMG> Где и что (желательно на pусском) можно почитать о том, DMG> как оpганизовать подставление нужной фоpмы слова в зависимости от DMG> числа. То есть, чтобы допустим в случае 1 выводить _год_, в случае DMG> 2-4 выводить _года_, а в случае 5-10яДД _лет_. Или аналогично с DMG> днями и тому подобное. Пpичем чтобы pаботало и с большими числами DMG> 100 лет, 3541 год и тому подобное. А может сами pасскажете в кpатце? DMG> Заpанее благодаpен. === Cut === sub inflect { my ($x, $s, $i2, $i5) = @_; $x = (substr($x, -2, 1) == 1) ? 10 : substr($x, -1); $s =~ s/\[(.*?)\]$//; return "$s$1" if $x == 1; return "$s$i2" if $x >= 2 && $x <= 4; return "$s$i5"; } === Cut === пользовать так: inflect( число, 'один_предмет_[изменяемое_окончание]', 'окончание_для_2-4_предметов', 'окончание_для_остального_кол-ва'); $s = inflect($x, 'Автомобил[ь]', 'я', 'ей'); $s = inflect($x, '[год]', 'года', 'лет'); - zxc - --- GoldED/W32 3.0.1 * Origin: e-mail: zxc@kak-sam.to, IRC: zxc13#fidorus (2:5020/238.13) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39033c3d88ae.html, оценка из 5, голосов 10
|