Xpoint
   [напомнить пароль]

Форматирование числа и Регулярные выражения

Метки: [без меток]
2011-08-24 15:14:01 [обр] Павел Карасёв(0/14)[досье]

Задача: из строки 1234567890 сделать строку 1.234.567.890 (форматировать произвольное число разделителями по три цифры, для удобства чтения)

Я мыслю так

(\d{0,2})(\d{3})+

т.е. сначала проверяю наличие цифр которые не краны трем (\d{0,2}), а затем выявляю последовательности по три знака (\d{3})+. Загвоздка в том что + во вторых скобках "съедает" все повторения кроме последнего.

Второе о чем я подумал это

(\d{3})$

т.е. взять последние три цифры от конца строки, но дальше мысль застопорилась...

спустя 20 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Перевернуть число наоборот, расставить точки, опять перевернуть.
спустя 10 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
спустя 2 часа 19 минут [обр] Marat Tanalin(0/78)[досье]
Можно и без регулярок. Например, на PHP так:
strrev(implode(' ', str_split(strrev('1234567890'), 3)));
спустя 28 минут [обр] Павел Карасёв(0/14)[досье]
Евгений Седов aka KPbIC[досье]
Спасибо, за статью. Забыл про просмотр вперед-назад... ))
спустя 13 часов [обр] Леонид Сысолетин(0/14)[досье]
Marat Tanalin[досье] если уж на PHP, то number_format
спустя 14 часов [обр] Marat Tanalin(0/78)[досье]
Леонид Сысолетин[досье]
Зная алгоритм, можно реализовать его на любом языке (в PHP есть встроенная функция number_format(), в других языках — может не быть). Суть в том, что регулярные выражения здесь слегка притянуты за уши.
Powered by POEM™ Engine Copyright © 2002-2005