Einrückungen rausfiltern

DataFox

Erfahrenes Mitglied
Hallo

ich hole per JavaScript den innerHTML Content aus einem Element. Der Content ist oft aus Gründen der besseren Lesbarkeit eingerückt, dadurch entsteht aber ein riesiger Haufen Datenmüll. So ein Content kann z.B. so aussehen:

Code:
function MaxString(maximum, outputid, inputid){
	var value;
	value = maximum - document.getElementById(inputid).value.length;
	if(value < 0){
 document.getElementById(inputid).value = document.getElementById(inputid).value.substring(0,maximum);
 value = maximum - document.getElementById(inputid).value.length;
	}
	if(value == maximum){
 document.getElementById(outputid).innerHTML = "maximal";
	} else {
 document.getElementById(outputid).innerHTML = "noch " + value + " von";
	}
}

Gibt es eine einfache Möglichkeit, so eine Art "trim()", um die Einrückungen zu entfernen? Also nur die Einrückungen (Leerzeichen und Tabs) am Anfang einer Zeile, bis das erste echte Zeichen kommt.

Das Ergebnis wäre dann sowas:

Code:
function MaxString(maximum, outputid, inputid){
var value;
value = maximum - document.getElementById(inputid).value.length;
if(value < 0){
document.getElementById(inputid).value = document.getElementById(inputid).value.substring(0,maximum);
value = maximum - document.getElementById(inputid).value.length;
}
if(value == maximum){
document.getElementById(outputid).innerHTML = "maximal";
} else {
document.getElementById(outputid).innerHTML = "noch " + value + " von";
}
}

freue mich über jeden Tipp!

Gruß
Laura
 
Hi Sven,

das sieht gut aus! Danke! Das mit dem "prototype" hat aber nichts mit prototype.js zu tun, also dieses weltberühmte Framework?

Wie kann ich über eine Variable loopen, die zwar einen riesigen String enthält, der jedoch "intern" viele viele Zeilen hat? Also viele New-Line Sonderzeichen? Da muss man mit einer Schleife drüber um dann "Zeile für Zeile" zu betrachten, richtig?

Gruß
Laura
 
Das mit dem "prototype" hat aber nichts mit prototype.js zu tun, also dieses weltberühmte Framework?
Schon, Prototype.js macht in größerem Maßstab genau das, was hier getan wurde. Das Framework wurde danach benannt.
Wie kann ich über eine Variable loopen, die zwar einen riesigen String enthält, der jedoch "intern" viele viele Zeilen hat? Also viele New-Line Sonderzeichen? Da muss man mit einer Schleife drüber um dann "Zeile für Zeile" zu betrachten, richtig?
Geht auch ohne Loops, einfach den RegExp anpassen:
Code:
/\s+$|^\s+/mg
Ansonsten würde ich folgendes tun, um die Zeichenkette Zeilenweise durchzugehen:
(angenommen str ist der zu Verarbeitende Text)
Code:
var lines = str.split("\n");
for (var i = 0; i < lines.length; i++)
{
    // Code zum Verarbeiten
}

Edit: Ich sollte echt erstmal das Antwortfenster aktualisieren, bevor ich antworte, wenn ich das Fenster vor 20 Minuten geöffnet habe. ;)
 
Geht auch ohne Loops, einfach den RegExp anpassen:
Code:
/\s+$|^\s+/mg
Falls die Ümbrüche selbst erhalten bleiben solln, müsste es dann so aussehen:
Code:
/(^[^\S\n\r]+|[^\S\n\r]+$)/gm

@DataFox:
Ums kurz zu Fassen, was prototype ist:
Es ist eine Eigenschaft von JS-Objekten, welche einen Zeiger auf die Konstruktor-Funktion des Objektes liefert. Über diesen Zeiger kannst du den Konstruktor des Objektes um neue Eigenschaften und Methoden erweitern...in diesem Fall das in JS implementierte String-Objekt

Oder ganz kurz:
DataFox hat gesagt.:
Gibt es eine einfache Möglichkeit, so eine Art "trim()"
Nein, aber per prototype kann man sie hinzufügen, was nicht passt wird halt passend gemacht :-)
 

Neue Beiträge

Zurück