RSS Trim-Funktion für Flash

verfasst 26.02.2008 von MediaCix | kurze URL: /t225 | Kommentar schreiben

Viele Flash-Programmierer suchen eine Funktion, die ähnlich der PHP-Funktion Trim ist. Bisher gibt es so etwas gar nicht im Flash ActionScript. Nach etlichen Versuchen habe ich dennoch einen Weg gefunden.

Nehmen wir an, wir haben eine Textzeile wie diese:

» Flash ActionScript
var mein_text:String = "         zeile1 zeile2 zeile3 z zz zz ";


Nun sollen alle Leerzeichen am Anfang und Ende rausgenommen werden.
Oft in Foren zu lesen, wird dabei auf diese Variante verwiesen:

» Flash ActionScript
mein_text.split(' ').join('');


Das Ding aber einen Hacken, denn es werden alle Leerzeichen entfernt.
Ausgabe:

zeile1zeile2zeile3zzzzz


Gesucht ist aber eine Funktion die nur die Zeichen vom Anfang und nur die Zeichen vom Ende entfernt. Also hat die besagte bisherige Lösung nicht wirklich etwas mit der PHP-Funktion Trim zu tun.

Ich persönlich habe nach einer Trim-Funktion gesucht, die der aktuellen Trim-Funktion von PHP sehr ähnlich ist. Und dort kann man zu Trim auch Zeichenketten definieren - man kann also mehrere Zeichen angeben, die vom Anfang und vom Ende entfernt werden sollen.

Nach einige Versuchen, habe ich dann ein Weg gefunden:

» Flash ActionScript
var mein_text:String = "         zeile1 zeile2 zeile3 z zz zz ";

ParaTrim = function (trenner,string) {
 
 // alle Zeichen nach den gesucht werden soll
 ex = trenner.split('');

 // alle Zeichen von links nach rechts wegnehmen
 for ( i = 0; i < string.length; i++ ) {
  for ( a = 0; a < ex.length; a++ ) {
   if ( string.indexOf(ex[a]) == 0 ) {
    string = string.substr(1,string.length);
   }
  }
 }

 // alle Zeichen von rechts nach links wegnehmen
 for ( i = 0; i < string.length; i++ ) {
  for ( a = 0; a < ex.length; a++ ) {
   if ( string.lastIndexOf(ex[a]) == (string.length-1) ) {
    string = string.substr(0, string.length - 1);
   }
  }
 }
 
 return string;
}

trace( ParaTrim(' z3',mein_text) );


Ausgabe:

eile1 zeile2 zeile


Die Funktion soll also alle Leerzeichen, den Buchstaben ?z? und die Zahl ?3? nur am Anfang und nur am Ende entfernen. Nunja, diese Funktion sieht im ersten Moment nicht sehr schön aus, erfüllt aber genau unser Ziel.

Die erste Schleife sucht von links nach rechts nach allen Zeichen die als Parameter übergeben wurden.
Wurde der Parameter beim ersten Zeichen (indexOf) gefunden, wird der String mit substr() am Anfang gekürzt.

Die zweite Schleife sucht von rechts nach links, also umgekehrt.
Wurde dabei der Parameter beim letzten Zeichen (lastIndexof) gefunden, wird der String mit substr() am Ende gekürzt.

Vielleicht wird die Variante ja irgendwann überflüssig, wenn neue ActionScript-Version auch Trim unterstürzen. Und vielleicht hat der ein oder andere noch eine bessere Lösung.

neuen Kommentar schreiben

Ich möchte automatisch eine E-Mail bei neuen Kommentaren erhalten.



Themen mit ähnlichen Inhalten


Tags zum Beitrag

flash     trim     indexof