hi!
In meinem Skript gibt es eine Liste @musikplan, in der Einträge
ungefähr so vorhanden sind:
$musikplan[0] " James & Diane Hits From UK`s Finest"
$musikplan[1] " Alan Graham Rock Pop & Sax"
$musikplan[2] " Jimmi Modern Music"
etc..
Gibt es eine Funktion, mit der ich alle Leerzeichen bis auf
jeweils eines zwischen den Wörtern in den einzelnen Elementen
löschen kann?
Du kannst in einer for-Schleife alle Element der Liste durchgehen:
for (@musikplan) {
...
}
Innerhalb der for-Schleife existiert dann eine Variable $_, die immer
den jeweils aktuellen Inhalt aus der Liste enthält. Wenn du diese
Variable veränderst, wird auch gleichzeitig der aktuelle Eintrag in
der Liste selbst geändert.
Ich weiss, dass der entsprechende reguläre Ausdruck /\s+2/ heisst;
möchte aber idealerweise umständlichen Quelltext umgehen.
Der Ausdruck stimmt aber nicht ganz. Am einfachsten wäre das wohl in
mehreren Schritten zu lösen:
for (@musikplan) {
s/^\s+//;
s/\s+$//;
s/\s+/ /g;
}
Die erste Substitution löscht Leerzeichen am Anfang, die zweite die
am Ende eines Eintrags. Danach werden dann Leerzeichen, die doppelt
oder mehrfach vorkommen auf ein Leerzeichen reduziert.
bye, Frank!