>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >JavaScript. Вывести строку в формате... http://forum.mozilla-russia.org/viewtopic.php?id=6518 |
princeandrew > 29-11-2005 07:26:53 |
Здравствуйте. Суть: есть число (количество байт файла), например, 9036443008. Проблема (точнее две) в том, как выводить разделитель (апостроф) между тройками чисел и как выводить всегда одно значение после запятой, даже если там 0 (сейчас он не выводится). |
Anton > 29-11-2005 09:41:02 |
Выделить код Код:var b = 9036443008000 / 1048576.0; b = b. toFixed (1); var dl = "'"; // разделитель разрядов var c = b. match (/(\d{0,2})((\d{3})*)(\.\d)$/); var d = new Array (c [1], c [2]. match (/(\d{3})/g). join (dl)); var e = d. join (dl) + c [4]; document. write (e); Подойдет ? |
Al_H > 29-11-2005 10:47:31 |
Короче - через replace можно |
Al_H > 29-11-2005 10:49:41 |
А. Стоп. Тут только с дробной частью. Нужно бы что-то вроде |
princeandrew > 29-11-2005 12:42:53 |
Спасибо большое за помощь. |
princeandrew > 29-11-2005 12:51:14 |
Только вот нюанс |
Snik > 29-11-2005 14:52:12 |
princeandrew |
princeandrew > 29-11-2005 15:32:37 |
Супер. |
Rion > 29-11-2005 15:57:49 |
как вам такой вариант Выделить код Код:b=a.toFixed(1).split('.'); a=b[0].split('').reverse().join('').replace(/(\d{3}\B)/g,"\$1'").split('').reverse().join('')+'.'+b[1]; собственно в 'a' у нас число которое надо красиво нарисовать а 'b' это просто временная переменная |
Rion > 29-11-2005 16:09:05 |
всё было бы ГОРАЗДО проще если бы удалось както replace рассматривать строку с конца а не с начала. |
Snik > 29-11-2005 16:13:50 |
Rion
Хе, так можно, рассматривая строку как массив, поменять местами ее элементы (reverse), провести замену и поменять обратно |
Rion > 29-11-2005 17:02:55 |
Snik пишет
что я и сделал выше |
Anton > 29-11-2005 21:16:49 |
Обходимся без split - reverse - join: |
Al_H > 30-11-2005 00:38:40 |
Если уж через позиционную проверку, то надо как-то так |
Anton > 30-11-2005 12:08:46 |
Al_H пишет
Al_H, а зачем ? Вот так: ведь короче. |
Rion > 01-12-2005 12:41:48 |
в итоге можно написать ф-ию Выделить код Код:function numFormat(a) { return a.toFixed(1).replace(/(\d{1,3}(?=(\d{3})+\.\d))/g,"\$1'"); } ЗЫ плохо меня в детстве регуляным выражениям учили.. мог бы и сам до такого догадатсья |
princeandrew > 06-12-2005 13:28:44 |
Давно сюда не заглядывал |