Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-06-2004, 16:09   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
trim-Funktion in actionscript?

Gibt es in Actionscript eine Funktion, die Links und rechts von einem String Leerzeichen und Zeilenumbrüche entfernt, also so wie die Funktion trim() in PHP?
Zitat:
trim
(PHP 3, PHP 4 , PHP 5)
trim -- Entfernt überflüssige Zeichen ("whitespace") am Anfang und Ende eines Strings
realtigger ist offline   Mit Zitat antworten
Alt 11-06-2004, 16:49   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
Hmmm, ich habe jetzt schnmal provisorisch eine eigene trim-Funktion geschrieben.

Code:
String.prototype.getTrimmedString = getTrimmedString;
function getTrimmedString() {

	var trimmedString = this;
	
	// String mit allen Zeichen, die am Anfang und am Ende des Strings entfernt werden sollen
	var whitespaceString = " \n\r";

	// Zeichen vorne entfernen
	var ready = false;
	while (ready == false) {
		if ((trimmedString.charAt(0) != "") and (whitespaceString.indexOf(trimmedString.charAt(0)) <> -1)) {
			trimmedString = trimmedString.substring(1, this.length); 
		} else {
			ready = true;	
		}
	}

	// Zeichen hinten entfernen
	var ready = false;
	while (ready == false) {
		if ((trimmedString.charAt(0) != "") and (whitespaceString.indexOf(trimmedString.charAt(trimmedString.length-1)) <> -1)) {
			trimmedString = trimmedString.substring(0,trimmedString.length-1); 
		} else {
			ready = true;	
		}
	}

	// getrimmten String zurückgeben
	return trimmedString;
}
Für Anregungen und Kritiken bin ich immer zu haben
realtigger ist offline   Mit Zitat antworten
Alt 11-06-2004, 18:10   #3 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
so, hab auch mal schnell eine geschrieben, kann man bestimmt noch optimieren!
ist aber schonmal einiges schneller als deine variante.

Code:
test = "\rHallo\n";
//deins
String.prototype.getTrimmedString = getTrimmedString;
function getTrimmedString() {

	var trimmedString = this;
	
	// String mit allen Zeichen, die am Anfang und am Ende des Strings entfernt werden sollen
	var whitespaceString = " \n\r";

	// Zeichen vorne entfernen
	var ready = false;
	while (ready == false) {
		if ((trimmedString.charAt(0) != "") and (whitespaceString.indexOf(trimmedString.charAt(0)) <> -1)) {
			trimmedString = trimmedString.substring(1, this.length); 
		} else {
			ready = true;	
		}
	}

	// Zeichen hinten entfernen
	var ready = false;
	while (ready == false) {
		if ((trimmedString.charAt(0) != "") and (whitespaceString.indexOf(trimmedString.charAt(trimmedString.length-1)) <> -1)) {
			trimmedString = trimmedString.substring(0,trimmedString.length-1); 
		} else {
			ready = true;	
		}
	}

	// getrimmten String zurückgeben
	return trimmedString;
}

//meins
String.prototype.trim = function() {
	var trimmed;
	var firstChar = this.charAt(0);
	var lastChar = this.charAt(this.length-1);
	if(firstChar == " " || firstChar == "\n" || firstChar == "\r")
		trimmed = this.substring(1, orgLength);
	if(lastChar == " " || lastChar == "\n" || lastChar == "\r")
		trimmed = trimmed.substring(0, trimmed.length-1);
	return trimmed;
}

start = getTimer();
for(var i=0; i<1000; i++) {
	var blupp = test.getTrimmedString();
}
trace("Fkt1: "+(getTimer()-start));
start = getTimer();
for(var i=0; i<1000; i++) {
	var blupp = test.trim();
}
trace("Fkt2: "+(getTimer()-start));
trace("_"+test.trim()+"_");
trace("_"+test.getTrimmedString()+"_");
gruß, mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 11-06-2004, 23:11   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
Danke für die Antwort
Ich glaube, dass die Funktion die du geschrieben hast nicht das macht, was meine macht und das was ich brauche.
Die Funktion soll _alle_ "unnötigen" Zeichen am Anfang und am Ende entfernen. D.h. also aus dem String
"\n\r blubber \n\n \r"
soll werden
"blubber"
Deine Funktion schmeißt höchstens vorne und hinten ein Zeichen weg. Der von dir gemessene Zeitunterscheid beim entfernen eines Buchstaben kommt sicherlich daher, dass du das Zeichen direkt prüfst und ich das Zeichen per indexOf() in meine String suche, der alle "unnötigen" Zeichen definiert.
Ich habe diese Methode gewählt um bequem noch eine neues Zeichen als "unnötig" zu definieren.
realtigger ist offline   Mit Zitat antworten
Alt 12-06-2004, 14:05   #5 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
Code:
String.prototype.trim = function() {
	var trimmed = this;
	var firstChar = trimmed.charAt(0);
	var lastChar = trimmed.charAt(trimmed.length-1);
	while(firstChar == " " || firstChar == "\n" || firstChar == "\r"){
		trimmed = trimmed.substring(1, trimmed.length);
		firstChar = trimmed.charAt(0);
	}
	while(lastChar == " " || lastChar == "\n" || lastChar == "\r") {
		trimmed = trimmed.substring(0, trimmed.length-1);
		lastChar = trimmed.charAt(trimmed.length-1);
	}
	return trimmed;
}
so, kann sein, dass noch ein fehler drin ist, war gerade ausm kopp weil ich hier kein flash hab... aber schnell wie deines muss es immer noch sein. da es sich um nen prototypen handelt, muss er ja auch nicht dynamisch sein.

gruß, mati
__________________
„Ich war geheilt, all right!“

Geändert von mati (12-06-2004 um 14:07 Uhr)
mati ist offline   Mit Zitat antworten
Alt 12-06-2004, 14:36   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
Zum Whitespace gehört noch <TAB>.
Gnut ist offline   Mit Zitat antworten
Alt 13-06-2004, 11:03   #7 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
also, hab nochmal bisserl geschaut. meine variante mit <TAB>:
Code:
String.prototype.trim = function() {
	var trimmed = this;
	var firstChar = trimmed.charAt(0);
	var lastChar = trimmed.charAt(trimmed.length-1);
	while (firstChar == " " || firstChar == "\n" || firstChar == "\r" || firstChar == "\t") {
		trimmed = trimmed.substring(1, trimmed.length);
		firstChar = trimmed.charAt(0);
	}
	while (lastChar == " " || lastChar == "\n" || lastChar == "\r" || firstChar == "\t") {
		trimmed = trimmed.substring(0, trimmed.length-1);
		lastChar = trimmed.charAt(trimmed.length-1);
	}
	return trimmed;
};
jetzt hab ich aber bei flashkit noch nen prototypen von "senocular" gefunden, der a) sehr clever gelöst ist und b) nochmal schneller ist als meine variante. also auf zum frohen trimmen!
Code:
String.prototype.trim = function(){
	if (!isNaN(this+" 0")) return "";
	var s = 0, e = this.length;
	while(s < e) if (isNaN(this.charAt(s)+" 0")){break;}else{s++;}
	while(e > 0) if (isNaN(this.charAt(e)+" 0")){break;}else{e--;}
	return this.substring(s,e+1);
}

gruß, " mati".trim()
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 13-06-2004, 13:32   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
sowas geht auch, nur performance hab ich nun nich nachgeprüft wird wohl recht ätzend sein
PHP-Code:
a=" /r/n   /n blubber/n    "
a=a.split("/r").join("").split("/n").join("").split("  ").join(""
deluxe

Geändert von Deluxe (13-06-2004 um 14:01 Uhr)
Deluxe ist offline   Mit Zitat antworten
Alt 13-06-2004, 19:00   #9 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
Zitat:
Zitat von Deluxe
sowas geht auch, nur performance hab ich nun nich nachgeprüft wird wohl recht ätzend sein
PHP-Code:
a=" /r/n   /n blubber/n    "
a=a.split("/r").join("").split("/n").join("").split("  ").join(""
deluxe

hi deluxe,

ja so war mein erster gedanke auch, doch funktioniert nicht wirklich, da:
"Ich mag das FF " dann "IchmagdasFF" wird

mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 13-06-2004, 19:25   #10 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
jau desshalb hab ich den auch nochmal editiert
hab jetzt einfach 2 blanks reingenommen dann werden so konstrukte wie
" blubber " ganz auf "blubber" oder auf " blubber " gekillt
was man dann nurnoch machen muß
checken ob links bzw rechts nen blank ist und das killen also so in der art
PHP-Code:
a=" /r/n   /n blubber/n   " 
//0815
a=a.split("/r").join("").split("/n").join("").split("  ").join("")
//seiten trimmen
a=a.substring((a.charCodeAt(0)==32)*1,a.length-1*(a.charCodeAt(a.length-1)==32)) 
deluxe
Deluxe ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele