Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Троллинг от NumberFormatter (http://www.flasher.ru/forum/showthread.php?t=203369)

in4core 19.09.2013 18:34

Троллинг от NumberFormatter
 
Код AS3:

public static function getSplittedCurrency(value:String):String
                {
                        var input:Number = Number(value);
                        var numFormat:NumberFormatter = new NumberFormatter("en_US");
                        numFormat.decimalSeparator = ".";
                        numFormat.trailingZeros = false;
 
                        var output:String = numFormat.formatNumber(input);
 
                        if (output.indexOf(".") != -1 ) output += "0";
 
                        output = output.split(",").join(" ");
 
                        return output;
 
 
                }

А троллинг в том, что укажи локаль как ru_RU или DEFAULT. Мы в трейсе видим 1 000 000. В текстовое же поле выводится 1000000 без пробелов, так что пришлось делать очередной танец с бубном. Или я чего то не понимаю?!

Dukobpa3 19.09.2013 21:02

Не понимаешь.
Форматтер за тебя подумал что тебе там надо, пробелы или зпт, в локали америкосов приянто ставить зпт, в русской пробелы.
Или пиши свой велосипед. Что ты собственно и сделал. Но нафига тогда тебе форматтер я не понимаю.
А локаль можешь получать где-то во флешварах и сюда подставлять чтоб пользователи получали привычный формат чисел.

dimarik 19.09.2013 21:28

Ради любопытства... А зачем изначально Number-величину, коей является денежка, судя по названию метода, переводить в String, чтобы потом перевести в Number?

in4core 20.09.2013 12:12

C сервера шлют стринг - и сразу делаем перевод, а выыводим стринг логично почему, чтобы в текстовое поле вписать, в модели хранить данную инфу не надо ( так надо ), поэтому она как графическая часть, можно сказать.

Dukobpa3 - Это ты не понимаешь, я как раз все верно написал
Цитата:

Форматтер за тебя подумал что тебе там надо, пробелы или зпт,
Я о том же и твержу! Мне как раз нужны пробелы! Так вот ФОРМАТТЕР в трейс выдает с ПРОБЕЛАМИ, а когда я эту строчку пихаю в ПОЛЕ - то пробелы исчезают! ПОЭТОМУ - ты видишь велосипед, а не потому, что я его придумал от нечего делать!

AlexCooper 20.09.2013 12:41

Вложений: 1
Странно, у меня всё ок привожу код и влаживаю свф. Может быть у Вас у текстового поля restrict выставлен?
Код AS3:

import flash.text.TextField;
 
function getSplittedCurrency(value:String,format:String = 'en_US'):String
{
        var input:Number = Number(value);
        var numFormat:NumberFormatter = new NumberFormatter(format);
                numFormat.decimalSeparator = ".";
                numFormat.trailingZeros = false;
 
        return numFormat.formatNumber(input);
}
 
var t:TextField = new TextField();
        t.text = getSplittedCurrency("1000");
 
addChild(t);
 
        t = new TextField();
        t.text = getSplittedCurrency("1000",'ru_RU');
 
        t.y = 20;
 
addChild(t);

text.swf   (101.5 Кб)

in4core 20.09.2013 12:45

В том то и прикол, что нет. И если я делаю так, как показал выше, через костыль - то пробелы есть. Как такое может быть вообще?!

AlexCooper 20.09.2013 12:47

скачайте свф, там всё отлично работает без костылей. Вот только почему то в браузере запятая не отображается, может не подгрузил шрифт или каким-то образом локаль слетает.

in4core 20.09.2013 14:59

Стоит проверить текстовое поле, может быть какой нибудь автокерн все портит, но опять же как там? Вот делаю проверку 3 символа допустим - выводит в трейс пробел, значит все таки пробел есть - в текстовом поле без пробела выходит, а если самому принудительно пробелы ставить, как написал выше - то все ок, ну чудеса же!

Wolsh 20.09.2013 15:43

Чудес не бывает.
Например, это может быть не совсем пробел.
Знаете, почему ТАВ обычно 4 знака? Догадайтесь.


Часовой пояс GMT +4, время: 02:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.