Schrift
[thread]6151[/thread]

Zeichenkette erweitern



<< >> 5 Einträge, 1 Seite
[HR]Doomrunner
 2004-03-17 16:41
#81127 #81127
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
Hi,

ich habe eine Zeichenkette. Zum Beispiel:

Code (perl): (dl )
$string = '30,59 EUR';


Jetzt berechne ich, wie viele Leerzeichen ich am Anfang einfügen muss, damit ich das richtig eingerückt habe. Wie kann ich dann am besten 13 Leerzeichen einfügen? Ich kann das ja über ne for-schleife machen:

Code (perl): (dl )
1
2
3
4
5
for(my $i = 1; $i <= $anzahlzeichen; $i++) {
    $leerzeichen .= ' ';
}

$string = $leerzeichen.$string;


Das geht aber doch bestimmt auch viiiiel einfacher, oder? :D
pq
 2004-03-17 16:52
#81128 #81128
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
bitte, mach's dir doch nicht soo kompliziert...
wie lange soll $string sein? 22 zeichen? bitte schön:
$string = sprintf "%22s", $string;
wir programmieren hier schliesslich perl und nicht java =)

edit: 13 leerzeichen bekommst du übrigens mit $leerzeichen = ' ' x 13;\n\n

<!--EDIT|pq|1079535258-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Taulmarill
 2004-03-17 17:56
#81129 #81129
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
noch ein tip,
die for schleife kann man auch einfacher schreiben, und zwar als:
Code: (dl )
for my $i ( 1 .. $anzahlzeichen ) {}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
[E|B]
 2004-03-17 18:57
#81130 #81130
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Noch ein Tipp: Bitte gar keine Schleife! Nimm das was pq gepostet hat. ;)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Crian
 2004-03-23 13:33
#81131 #81131
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Du kannst in sprintf sogar die Länge mit * variabel angeben. (Etwa um die Ausgaben an eine Spalte mit veränderlicher Breite anzupassen.)
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
<< >> 5 Einträge, 1 Seite



View all threads created 2004-03-17 16:41.