Termination
Запись от Партизан размещена 27.11.2010 в 15:01
Часто бывает необходимым вывести юзеру количество чего-либо, например найденного с помощью поиска(в последнем моем случае, это были рекламные конструкции). И тут подстерегает засада. Окончание этих самых конструкци[й], потому как различать нужно где одна конструкци[я], а где к примеру, целых две конструкци[и]. Когда-то, еще на as2, я писал функцию которая справлялась с этим на ура. Чем я и решил воспользоваться и на этот раз.
0 конструкци[й]
1 конструкци[я]
2 конструкци[и]
3 конструкци[и]
4 конструкци[и]
5 конструкци[й]
6 конструкци[й]
7 конструкци[й]
8 конструкци[й]
9 конструкци[й]
10 конструкци[й]
11 конструкци[й]
12 конструкци[й]
13 конструкци[й]
14 конструкци[й]
15 конструкци[й]
16 конструкци[й]
17 конструкци[й]
18 конструкци[й]
19 конструкци[й]
20 конструкци[й]
21 конструкци[я]
22 конструкци[и]
23 конструкци[и]
24 конструкци[и]
25 конструкци[й]
26 конструкци[й]
27 конструкци[й]
28 конструкци[й]
29 конструкци[й]
Это результат исполнения теста этого класса: (Termination.test('конструкци',['я', 'й', 'и']))
package utils { /** * ... * @author Mikhail Klabukov (SaintPartizan) Q_QWERT@mail.ru * * */ public class Termination { public static function check(number:int,terminations:Array):String { var nb:String = String(number); var num:uint; var v:Number = Number(nb.substr(-1, 1)); if (Number(nb.substr(-2, 2))>=20 || Number(nb.substr(-2, 2))<=10) { if (v>=2 && v<5) { num = 2; } if (v>=5 || v == 0) { num = 1; } if (v == 1) { num = 0; } } else { num = 1; } return terminations[num]; } public static function test(word:String, arr:Array = null):void { if (!arr) arr = [1, 2, 3]; for (var i:int = 0; i < 30; i++) { var term:String = Termination.check(i, arr); trace(i, word+'[' + term + ']'); } } } }
Окончание лучше всего подбирать под каждое конкретное слово тестовой функцией, чтобы было наглядно видно, куда и что подставить. Например для слова "час" уже по первым трем строчкам теста
Код:
0 час[2] 1 час[1] 2 час[3]
Короче говоря полезные мелочи, и приятно

Всего комментариев 2
Комментарии
![]() ![]() |
|
Сейчас использовать буду)
Спасибо! |
Последние записи от Партизан
- TransformUtil (20.05.2012)
- Between2Nums (28.11.2010)
- Termination (27.11.2010)
- KeyChecker v0.2 (27.11.2010)
- KeyChecker (26.11.2010)