Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7177[/thread]

tausenderpunkt in zahl einfügen (Seite 2)

Leser: 1


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Taulmarill
 2005-08-01 15:18
#56868 #56868
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
mir ist noch was in crians subroutine aufgefallen, ich würde die internationale schreibweise eher mit tr/.,/,./ konvertieren, der regex in der sub würde für kommazahlen nicht funktionieren. ausserdem ist tr/// schneller als echte regexe ;)
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2005-08-01 15:19
#56869 #56869
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Taulmarill,01.08.2005, 13:07]ähm, also entweder hab ich mich hier komplett verhauen, oder die regexe von strat und crian funktionieren nicht (richtig),[/quote]
wenn du ihn so verwenden wuerdest, wie ich ihn angegeben habe, wuerde er funktionieren. habe ich oben
Code: (dl )
$zahl =~ s/(\d+)(\d{3})/$1.$2/;

oder
Code: (dl )
1 while $zahl =~ s/(\d+)(\d{3})/$1.$2/;

geschrieben?
das funktioniert fuer alles vor dem komma; wenn du auch noch nachkommastellen haben willst, wuerde ich sowas wie das folgende verwenden:
Code: (dl )
1
2
1 while ($zahl =~ s/^([+-]?\d+)(\d\d\d)/$1.$2/); # vor komma
1 while ($zahl =~ s/(\d\d\d)(\d+)$/$1.$2/); # nachkomma
\n\n

<!--EDIT|Strat|1122895900-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Taulmarill
 2005-08-01 15:24
#56870 #56870
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
[quote=Crian,01.08.2005, 13:09]vielleicht solltest Du nicht nur einen Ausschnitt der Funktion nehmen ;)
eventuell haben die beiden reverses doch was zu bedeuten ^^[/quote]
richtig, das hab ich übersehen, ist aber irgendwie umständlich, oder? naja, der regex aus der perlfaq ist für normalsterbilche auch nicht unbedingt selbsterklärend.

Quote
Oder ich bin noch zu stark geprägt von der Fortan Zeit. Da konnten Funktionen maximal 6 Zeichen lang sein.

sechs zeichen ist manchal evtl. doch ein bischen mager...

Quote
Und wenn, dann nicht FuegeTausenderPunkteEin, sondern fuege_tausenderpunkte_ein ... oder insert_dots ;)

ich würd's wohl insert_dots nennen, oder format_number, da ja zusätzlich noch "." gegen "," ausgetauscht wird.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2005-08-01 15:26
#56871 #56871
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Aus meiner Anwendererfahrung macht meine Funktion das schon richtig, desweiteren stammt sie aus dem Kochbuch, nur die Komma-Punktumstellung hab ich da reingebracht.

Vielleicht würde tr da etwas schneller gehen. Aber darauf kommt es (mir) (an dieser Stelle) nicht an. Auf jeden Fall sollen die nicht vertauscht werden.

Außerdem macht Dein Text falsche Annahmen. Die Zahlen die Reingehen haben die Form 1234.5678 - also nicht mit Komma.\n\n

<!--EDIT|Crian|1122896204-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Strat
 2005-08-01 15:34
#56872 #56872
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
sub FormatGermanOrAustrianOrSuisseReadableLongNumberWithDotsAfterEachThreeFigures {
 # version: 0.01 01 Aug 2005 Strat
 my (@numbers) = @_;
 foreach (@numbers) {
   1 while s/^([+-]?\d+)(\d\d\d)/$1.$2/; # vor komma
   1 while s/(\d\d\d)(\d+)$/$1.$2/; # nach komma
 } # foreach
 return @numbers;
} # FormatGermanOrAustrianOrSuisseReadableLongNumberWithDotsAfterEachThreeFigures
\n\n

<!--EDIT|Strat|1122896151-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2005-08-01 15:38
#56873 #56873
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
lol ... ich wollte aber keine Punkte nach dem Komma =)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
J-jayz-Z
 2005-08-01 15:41
#56874 #56874
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
kaum übertrieben ^^
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Taulmarill
 2005-08-01 15:42
#56875 #56875
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
[quote=Crian,01.08.2005, 13:26]Aus meiner Anwendererfahrung macht meine Funktion das schon richtig, desweiteren stammt sie aus dem Kochbuch, nur die Komma-Punktumstellung hab ich da reingebracht.

Vielleicht würde tr da etwas schneller gehen. Aber darauf kommt es (mir) (an dieser Stelle) nicht an. Auf jeden Fall sollen die nicht vertauscht werden.

Außerdem macht Dein Text falsche Annahmen. Die Zahlen die Reingehen haben die Form 1234.5678 - also nicht mit Komma.[/quote]
es ging mir auch nicht darum, in deinem code rumzufingern, sondern für den fragesteller oder andere leser noch etwas anzumerken. ich komme häufig an schreibweisen a'la 1,234,567.89 die ich dann für die deutsche schreibweise entsprechend in 1.234.567,89 umformatieren muss. das geht mit tr/// wesendlich einfacher als mit einem regex.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2005-08-01 16:02
#56876 #56876
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
und da viele leute vergessen, dass es ja auch noch tr/.../.../ oder y/.../.../ gibt...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2005-07-31 15:36.