Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
534
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von DataFox
    DataFox DataFox ist offline Mitglied Brokat
    Registriert seit
    Nov 2007
    Beiträge
    267
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
     

  3. #3
    Avatar von DataFox
    DataFox DataFox ist offline Mitglied Brokat
    Registriert seit
    Nov 2007
    Beiträge
    267
    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
     

  4. #4
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.098
    Zitat Zitat von DataFox Beitrag anzeigen
    ... Das mit dem "prototype" hat aber nichts mit prototype.js zu tun, also dieses weltberühmte Framework? ...
    Hallo Laura,

    sieh dir das hier mal an. Wird dich vielleicht interessieren und deine Frage beantworten.
     

  5. #5
    Avatar von cr4shm4n
    cr4shm4n cr4shm4n ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    73
    Zitat Zitat von DataFox Beitrag anzeigen
    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.
    Zitat Zitat von DataFox Beitrag anzeigen
    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 :
    1
    
    /\s+$|^\s+/mg
    Ansonsten würde ich folgendes tun, um die Zeichenkette Zeilenweise durchzugehen:
    (angenommen str ist der zu Verarbeitende Text)
    Code :
    1
    2
    3
    4
    5
    
    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.
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von cr4shm4n Beitrag anzeigen
    Geht auch ohne Loops, einfach den RegExp anpassen:
    Code :
    1
    
    /\s+$|^\s+/mg
    Falls die Ümbrüche selbst erhalten bleiben solln, müsste es dann so aussehen:
    Code :
    1
    
    /(^[^\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:
    Zitat Zitat von DataFox
    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
     

Ähnliche Themen

  1. Greenscreen rausfiltern
    Von Rancasta im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 3
    Letzter Beitrag: 24.02.11, 14:04
  2. Einrückungen aus Quellcode filtern
    Von DataFox im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.02.08, 20:30
  3. Sonderzeichen rausfiltern
    Von Wissenscoder im Forum PHP
    Antworten: 2
    Letzter Beitrag: 06.03.05, 10:58
  4. Stimme rausfiltern
    Von d4kine im Forum Audiotechnik, Recording & Audio-Software
    Antworten: 4
    Letzter Beitrag: 31.01.05, 20:41
  5. Zeilenumbruch rausfiltern
    Von dragonlord im Forum PHP
    Antworten: 3
    Letzter Beitrag: 07.01.05, 23:31