• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

p-Elemente aus Zeilen machen

blabla333

Mitglied
Ich möchte gerne, dass ein String wie folgt "aufgedröselt" wird:
1. Jede Zeile wird zu einem HTML-Absatz
2. In einem zusätzlichen Array gibt es eine Stichwortliste. Taucht nun ein Stichwort aus dieser Liste am Anfang (!) einer Zeile auf, so wird ein eigener Absatz daraus gemacht. Sollte hinter dem Stichpunkt ein Doppelpunkt sein, so wird dieser entfernt.
3. Die letzte Zeile wird zu einem HTML-Absatz

Code:
var stichwortliste = [ 'Ein Beispiel', 'Test'];

var html = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr\n"+
"Test: Lorem ipsum dolor sit amet, consetetur sadipscing elitr\n"+
"Ein Beispiel Lorem ipsum dolor sit amet, consetetur sadipscing elitr";

Das Ergebnis sollte sein:
Code:
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>
<p>Test</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>
<p>Ein Beispiel</p>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>

Mein Ansatz ist folgender:
Code:
html.trim().replace(/(.*?)(\n|:)/mgi, '<p>$1</p>');

Punkt 1 sollte so funktionieren
Punkt 2 Das mit dem Doppelpunkt ist so natürlich Quatsch...
Punkt 3: Einfach nach dem trim() dem String ein \n wieder anhängen?

P.S.: Ich habe mein ursprüngliches Konzept neu gestaltet, deshalb der neue Post...
 
Was spricht gegen folgendes?

Code:
var lines = text.split(/\n+/);

Woher hast du übrigens die funktion trim()?

Und was genau ist nun eigentlich dein Problem? Willst du das wir das alles für dich programmieren?
Du hast doch gerade genau aufgeschrieben was du machen willst. Warum setzt du es nicht einfach um. Google weiß auf jede deiner fragen eine Antwort und das schneller als wir.
 
Nein, wie immer erwarte ich keine fertige Lösung.
Aber zum Beispiel habe ich keine Ahnung, wie ich am Besten den zweiten Punkt umsetzen kann.
Ich bin ja immer per Google unterwegs. Aber ab und an brauche ich einfach Input, d.h. Denkansätze, wie ich eben da rangehen kann. Natürlich immer gerne mit kurzen Code-Beispielen, weil mir diese am Besten weiterhelfen.

Grundsätzlich sind meine Probleme meist noch etwas komplexer. Ich poste hier in der Regel immer eine vereinfachte Sache, die mir einfach nur bei einem konkreten Ansatz weiterhelfen soll.

trim() ist eine JQuery-Funktion.
 
Du musst dich mit den JavaScript Array funktionen auseinander setzen, damit folgendes funktioniert.

Wie schon gesagt kannst du mit der split funktion ganz einfach alles anhand der Zeilenumbrüche trennen.
Danach gehst du deine Liste von Begriffen durch, welche du in Überschriften umwandeln willst und fragst jede Zeile ab ob indexOf(überschrift) === 0 ist, wenn ja enthält die zeile deine überschrift und zwar ganz am anfang.
Nun brauchst du die substring funktion von javascript um den bestimmten teil aus dem string zu entfernen und die überschrift mit den oben genannten array funktionen über den aktuellen eintrag über den du gehst einzufügen. (bei verwendung einer for schleife nicht vergessen den zähler hochzuschrauben).
nachdem du jeden eintrag durchgehst und nach überschriften gesucht hast solltest du im gleichen schritt auch die <p> tags einfügen.

danach solltest du einen fertigen text haben. falls du etwas hierraus nicht beim ersten mal verstehst ruhig ein zweites mal durchlesen. :) einfacher kann ich es zu so später stunde nicht erklären.

du suchst am ende nach einfachen manipulationsfunktionen für arrays und strings, welche es in jeden sprachen gibt und welche glücklicherweise (außer in microsoft produkten) meistens ähnlich heißen.
 
Zurück
Oben