Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№129-11-2005 07:26:53

princeandrew
Участник
 
Группа: Members
Зарегистрирован: 27-10-2005
Сообщений: 16

JavaScript. Вывести строку в формате...

Здравствуйте.
Помогите с проблемкой, если у таковой есть решение.
JavaScript практически не знаю.

Суть: есть число (количество байт файла), например, 9036443008.
Необходимо вывести его в формате 8'617.8. То есть 9036443008/1024/1024.
Сейчас делаю так:
<td class="size"><script type="text/javascript">b = 9036443008/1048576.0; a += b; b = b.toFixed(1); document.write(eval(b));</script></td>

Проблема (точнее две) в том, как выводить разделитель (апостроф) между тройками чисел и как выводить всегда одно значение после запятой, даже если там 0 (сейчас он не выводится).

Отсутствует

 

№229-11-2005 09:41:02

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: JavaScript. Вывести строку в формате...

Выделить код

Код:

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);

Подойдет ?
Наверняка можно и покороче, но не знаю как.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№329-11-2005 10:47:31

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript. Вывести строку в формате...

Короче - через replace можно

Отсутствует

 

№429-11-2005 10:49:41

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript. Вывести строку в формате...

А. Стоп. Тут только с дробной частью. Нужно бы что-то вроде

Выделить код

Код:

/(\d{0,2})((\d{3})*)((\.\d)?)$/

Отсутствует

 

№529-11-2005 12:42:53

princeandrew
Участник
 
Группа: Members
Зарегистрирован: 27-10-2005
Сообщений: 16

Re: JavaScript. Вывести строку в формате...

Спасибо большое за помощь.

Отсутствует

 

№629-11-2005 12:51:14

princeandrew
Участник
 
Группа: Members
Зарегистрирован: 27-10-2005
Сообщений: 16

Re: JavaScript. Вывести строку в формате...

Только вот нюанс :)
Если число например такое 643.2 , то выводится как '643.2
Можно поправить?

Отсутствует

 

№729-11-2005 14:52:12

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: JavaScript. Вывести строку в формате...

princeandrew
Добавь перед последним объединением

Выделить код

Код:

if (d[0]=='') d.shift();

Отсутствует

 

№829-11-2005 15:32:37

princeandrew
Участник
 
Группа: Members
Зарегистрирован: 27-10-2005
Сообщений: 16

Re: JavaScript. Вывести строку в формате...

Супер.
Ещё раз большое спасибо.

Отсутствует

 

№929-11-2005 15:57:49

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: JavaScript. Вывести строку в формате...

как вам такой вариант :cool:

Выделить код

Код:

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:06:07)


Gentoo Linux

Отсутствует

 

№1029-11-2005 16:09:05

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: JavaScript. Вывести строку в формате...

всё было бы ГОРАЗДО проще если бы удалось както replace рассматривать строку с конца а не с начала.
PS извиняюсь за 2 сообщения вместо 1. похоже прокся не пропускает пост запросы с переменными больше 512 байт


Gentoo Linux

Отсутствует

 

№1129-11-2005 16:13:50

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: JavaScript. Вывести строку в формате...

Rion

всё было бы ГОРАЗДО проще если бы удалось както replace рассматривать строку с конца а не с начала.

Хе, так можно, рассматривая строку как массив, поменять местами ее элементы (reverse), провести замену и поменять обратно :)
Хотя овчинка выделки не стоит, имхо.

Отсутствует

 

№1229-11-2005 17:02:55

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: JavaScript. Вывести строку в формате...

Snik пишет

Хе, так можно, рассматривая строку как массив, поменять местами ее элементы (reverse), провести замену и поменять обратно :)

что я и сделал выше ;)
просто интересно было поэксперементировать как можно сократить код:)


Gentoo Linux

Отсутствует

 

№1329-11-2005 21:16:49

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: JavaScript. Вывести строку в формате...

Обходимся без split - reverse - join:

Выделить код

Код:

b=a.toFixed(1);
b=b.replace(/(\d{1,3}(?=(\d{3})+\.\d))/g,"\$1'");

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1430-11-2005 00:38:40

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: JavaScript. Вывести строку в формате...

Если уж через позиционную проверку, то надо как-то так

Выделить код

Код:

/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g

Отсутствует

 

№1530-11-2005 12:08:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: JavaScript. Вывести строку в формате...

Al_H пишет

Если уж через позиционную проверку, то надо как-то так

Выделить код

Код:

/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g

Al_H, а зачем ?

Вот так:

Выделить код

Код:

/(\d{1,3}(?=(\d{3})+\.\d))/g

ведь короче.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1601-12-2005 12:41:48

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: JavaScript. Вывести строку в формате...

в итоге можно написать ф-ию

Выделить код

Код:

function numFormat(a) { return a.toFixed(1).replace(/(\d{1,3}(?=(\d{3})+\.\d))/g,"\$1'"); }

ЗЫ плохо меня в детстве регуляным выражениям учили.. мог бы и сам до такого догадатсья :(:(:(


Gentoo Linux

Отсутствует

 

№1706-12-2005 13:28:44

princeandrew
Участник
 
Группа: Members
Зарегистрирован: 27-10-2005
Сообщений: 16

Re: JavaScript. Вывести строку в формате...

Давно сюда не заглядывал :)
Нифига себе :)
Ещё суперее сделали :)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]