parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Прочитал вопрос повнимательнее и понял, что тебе надо другое... :)

Misha v.3 24.08.2002 17:30

Попробуй это (написано недавно, после всестороннего тестирования добавлю в lib.p)
@goodNumber[number_in;divider_in;decimal_divider_in][numberSign;numberParts;numberLeftPart;right_part;numberOut;leftn]
$numberParts[^number_in.lsplit[.]]

$numberSign(^math:sign($numberParts.piece))
$numberLeftPart[^eval(^math:abs($numberParts.piece))[%d]]

^if(^numberParts.count[] > 1){
    ^numberParts.offset(1)
    $right_part[$numberParts.piece]
}

^if(^numberLeftPart.length[] > 4){
        $left_length_mod(^numberLeftPart.length[] % 3)
        ^if($left_length_mod){
                $leftn[^numberLeftPart.match[(\d{$left_length_mod})(\d*)]]
                $numberOut[$leftn.1]
                $numberLeftPart[$leftn.2]
        }{
                $numberOut[]
        }
        $num(0)
        $numberOut[${numberOut}^numberLeftPart.match[(\d{3})][g]{^if($num || def
$numberOut){^if(def $divider_in){$divider_in}{&nbsp^;}}^num.inc(1)$match.1}]
}{
        $numberOut[$numberLeftPart]
}

$result[^if($numberSign < 0){-}${numberOut}^if(^numberParts.count[] > 1){^if(def
$decimal_divider_in){$decimal_divider_in}{,}$right_part}]