Thread sprintf um rechts im String 0 aufzufüllen (15 answers)
Opened by bianca at 2015-02-14 19:07

payx
 2015-02-15 11:39
#179673 #179673
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo betterworld,
2015-02-15T09:08:14 betterworld
2015-02-14T21:13:33 payx
Ich nehme mal an, das ist z.B. deshalb so, weil die Strings beim cmp (natürlich nicht <=>) noch weitere Bestandteile haben(?).

Selbst dann ist die Übung sinnlos, weil es für die Sortierung noch keinen Unterschied macht, ob man nun mit Leerzeichen oder mit Nullen auffüllt.

Stimmt meistens. Zugegebenermaßen spitzfindig, aber eben ein Fall, in dem man ggf. (d.h. je nach Aufgabenstellung) die Nullen benötigt (und an diesem "ich benötige" hatte ich mich ja aufgehalten):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl

use strict;
use warnings;

my @values = (
    12300
    , 123
    , 123000
);

my @suffixes = (
    'C'
    , 'B'
    , 'A'
);

for my $i (0..2) {
    $values[$i] = sprintf("%-12d",$values[$i]) . $suffixes[$i];
}

print "Mit Leerzeichen:\n";
print "$_\n" for sort {$a cmp $b} @values;

print "Mit Nullen:\n";

@values = map {$_ =~ s/ /0/gr} @values;

print "$_\n" for sort {$a cmp $b} @values;
Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
Mit Leerzeichen:
123 B
12300 C
123000 A
Mit Nullen:
123000000000A
123000000000B
123000000000C

Naja :-I

Grüße
payx
Last edited: 2015-02-15 11:49:28 +0100 (CET)

View full thread sprintf um rechts im String 0 aufzufüllen