Trim-Funktion für Flash
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:
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:
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
Themen mit ähnlichen Inhalten
Tags zum Beitrag
flash
trim
indexof