Hallo, ich habe ein nicht ganz einfaches Problem:Ich habe einen Text als String vorliegen. Der String enthält keine Zeilenumbrüche!
Nun möchte ich ein Unterprogramm schreiben was automatisch Zeilenumbrüche (Multiline) erzeugt.
Für das Beispiel gehen wir davon aus das nach 100 Zeichen ein Zeilenumbruch stattfinden soll.
Nun die Schwierigkeiten:
- Die Abfrage der Stringlänge ist in wirklichkeit ein Unterprogramm was mit hilfe von Textstring, Font und Schriftgrösse die Pixel berechnet. Beispielhaft wollen wir aber die Abfrage if (length($string) >= 100) benutzen!
- Solle ein zusammenhängendes Wort mal über 100 Zeichen haben ist es nach dem hundertsten Zeichen mit einem Bindestrich zu trennen.
Mein bisheriger Lösungsansatz war folgender:
sub stringlength {
my $string = shift; # Der eigentliche Textstring
my $oldstring = "";
my $i = 0; # Dauerschleife vermeiden while ((length($string) > 50) and ($i < 100)) {
$i++;
$string =~ s/\s+$//; # Leerzeichen am Zeilenende entfernen
$string =~ s/\s+(\S+)$//; # Alten Strin abtrennen
$oldstring = "$1 ".$oldstring; # Abgetrennten String speichern
if (length($string) <= 50) { # ggf. Ausgeben
print "StringOut: ".$string."\n";
$string = $oldstring;
$oldstring = "";
}
}
print "StringOut: ".$string."\n";
}
Ich bin für jede Hilfe dankbar!!!!
Datum: 22.04.2005-13:16
