|
| Tusinde-adskillere Fra : Adam Sjøgren |
Dato : 05-07-02 14:23 |
|
Hej.
Jeg synes jeg så en elegant måde i Perl at sætte tusinde-adskillere
ind i et tal... jeg kan bare ikke huske hvor/finde stedet igen.
Er der nogen der kan hjælpe?
Mvh.
--
"Okay, så håll käften och ta ner händerna, det är bra" Adam Sjøgren
asjo@koldfront.dk
| |
Lars Balker Rasmusse~ (05-07-2002)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 05-07-02 14:46 |
|
spamtrap@koldfront.dk (Adam Sjøgren) writes:
> Jeg synes jeg så en elegant måde i Perl at sætte tusinde-adskillere
> ind i et tal... jeg kan bare ikke huske hvor/finde stedet igen.
1 while s/(?<=\d)(\d\d\d)\b/,$1/
--
Lars Balker Rasmussen "Special is bad."
| |
N/A (06-07-2002)
| Kommentar Fra : N/A |
Dato : 06-07-02 00:27 |
|
| |
Lars Balker Rasmusse~ (06-07-2002)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 06-07-02 00:27 |
|
R. A. Larsen <r_larsen@image.dk> writes:
> Lars Balker Rasmussen <lars@balker.org> wrote:
> > spamtrap@koldfront.dk (Adam Sjøgren) writes:
> > > Jeg synes jeg så en elegant måde i Perl at sætte tusinde-adskillere
> > > ind i et tal... jeg kan bare ikke huske hvor/finde stedet igen.
> >
> > 1 while s/(?<=\d)(\d\d\d)\b/,$1/
>
> Og dog. Følgende forsøg:
>
> perl -e "$_=1234.5678;1 while s/(?<=\d)(\d\d\d)\b/,$1/;print"
Jow, jeg har det med at tænke i heltal :)
>
> Jeg har i en anden nyhedsgruppe fundet følgende eksempel (jeg tror, det
> var Abigail, som kom med den):
>
> s((\d+))(local $_ = reverse $1; s((\d\d\d)(?=\d))($1,)g; reverse)e;
>
> Den giver resultatet "1,234.5678", hvilket ser mere rigtigt ud.
Abigail snyder :)
Princippet er det samme - det at det pakkes ind i en s()() gør at hun
også kun arbejder på et heltal. Princippet kan snildt bruges på min
version:
s((\d+))(local $_ = $1; 1 while s/(?<=\d)(\d\d\d)\b/,$1/; $_)e
--
Lars Balker Rasmussen "S.M.R.T."
| |
Torben Frøberg (07-07-2002)
| Kommentar Fra : Torben Frøberg |
Dato : 07-07-02 23:49 |
|
Adam Sjøgren wrote:
> Hej.
>
>
> Jeg synes jeg så en elegant måde i Perl at sætte tusinde-adskillere
> ind i et tal... jeg kan bare ikke huske hvor/finde stedet igen.
>
> Er der nogen der kan hjælpe?
>
>
> Mvh.
>
>
$number=sprintf ($format, $tal))=~s/\./,/;
1 while $number =~ s/^(-?\d+)(\d\d\d)/\1.\2/;
Mvh. Torben
| |
|
|